在使用 nginx + fpm 的方式时,nginx 只需要配置4个(cpu 个数) worker。php 会自动动态创建 worker 接收请求。不会出现阻塞。但是独立使用 webman 的时候却需要额外开启端口来接收请求,以避免 IO 阻塞。
@walkor 亮哥,对这个问题,有个疑惑,有办法让 webman 做到,根据需要自动fork进程接收请求吗?
fpm支持动态创建进程,但是也不是无限创建,进程数量受到fpm配置和系统内存限制。 webman是事先创建好足够的进程,webman 不支持动态调整进程数。
php 会自动动态创建 worker 接收请求。不会出现阻塞。 这个说法不成立,fpm处理业务仍然是阻塞处理。
php 会自动动态创建 worker 接收请求。不会出现阻塞。
但是独立使用 webman 的时候却需要额外开启端口来接收请求,以避免 IO 阻塞。 没有这个说法。
但是独立使用 webman 的时候却需要额外开启端口来接收请求,以避免 IO 阻塞。
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。php-fpm 好像会自动fork进程。
nginx与fastCGI也就是fpm主进程进行socket通讯,将消息发送给主进程,主进程会选择空闲的子进程进行处理任务,当所有子进程都不空闲时,主进程会阻塞等待直到有空闲进程。
主进程再交接任务给子进程时会进行一些处理判断,选择是否弹性子进程 子进程在处理php业务时会进行php解析回收处理等一系列操作
workerman类似于fpm的静态模式,但worker处理任务的时候无需每次都进行php解析回收等操作,同时也可以不需要与nginx进行socket通讯,你可以简单理解为workerman就是nginx,直接可以通过worker处理任务,无需再下发
gateway的模式类似nginx+fpm,但整体还是没有php解析回收处理等操作,节省了很多资源和时间
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。不知道能否像 nginx 和 fpm 的配合一样,这样开端口感觉挺麻烦的
不同的process是不同的进程,不同的进程就需要开不同的端口,否则不同的进程监听相同的端口,如果协议不同,岂不是乱套了?
我的意思是,在 nginx + fpm 的模式下。不管每次的请求是慢请求还是快请求。都不需要开发人员去做额外的运维配置。
但是在 webman 的使用过程中,却需要区分快请求和慢请求。并且需要在 nginx 的运维层面做区分。
你不区分快慢请求也行啊,多开点进程就行,不是一定要区分,只不过区分的方案更好罢了
额外开端口其实主要是为了方便和Nginx和Apache的端口区分开, 然后便于通过反向代理实现一些其他的功能, 比如https之类的.如果直接使用80端口, 或者在webman里配置https,就很复杂了
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。不知道能否像 nginx 和 fpm 的配合一样,这样开端口后,还需要配置nginx的反代。
@walkor 亮哥,对这个问题,有个疑惑,有办法让 webman 做到,根据需要自动fork进程接收请求吗?
fpm支持动态创建进程,但是也不是无限创建,进程数量受到fpm配置和系统内存限制。
webman是事先创建好足够的进程,webman 不支持动态调整进程数。
php 会自动动态创建 worker 接收请求。不会出现阻塞。
这个说法不成立,fpm处理业务仍然是阻塞处理。
但是独立使用 webman 的时候却需要额外开启端口来接收请求,以避免 IO 阻塞。
没有这个说法。
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。php-fpm 好像会自动fork进程。
nginx与fastCGI也就是fpm主进程进行socket通讯,将消息发送给主进程,主进程会选择空闲的子进程进行处理任务,当所有子进程都不空闲时,主进程会阻塞等待直到有空闲进程。
主进程再交接任务给子进程时会进行一些处理判断,选择是否弹性子进程
子进程在处理php业务时会进行php解析回收处理等一系列操作
workerman类似于fpm的静态模式,但worker处理任务的时候无需每次都进行php解析回收等操作,同时也可以不需要与nginx进行socket通讯,你可以简单理解为workerman就是nginx,直接可以通过worker处理任务,无需再下发
gateway的模式类似nginx+fpm,但整体还是没有php解析回收处理等操作,节省了很多资源和时间
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。不知道能否像 nginx 和 fpm 的配合一样,这样开端口感觉挺麻烦的
不同的process是不同的进程,不同的进程就需要开不同的端口,否则不同的进程监听相同的端口,如果协议不同,岂不是乱套了?
我的意思是,在 nginx + fpm 的模式下。不管每次的请求是慢请求还是快请求。都不需要开发人员去做额外的运维配置。
但是在 webman 的使用过程中,却需要区分快请求和慢请求。并且需要在 nginx 的运维层面做区分。
你不区分快慢请求也行啊,多开点进程就行,不是一定要区分,只不过区分的方案更好罢了
额外开端口其实主要是为了方便和Nginx和Apache的端口区分开, 然后便于通过反向代理实现一些其他的功能, 比如https之类的.如果直接使用80端口, 或者在webman里配置https,就很复杂了
https://www.workerman.net/doc/webman/others/task.html 是这里的问题。不知道能否像 nginx 和 fpm 的配合一样,这样开端口后,还需要配置nginx的反代。