关于进程和 PHP -fpm 的一些疑惑
資深大佬 : palemoky 38
最近在看 CSAPP ,看到进程部分,结合之前的 PHP 学习,有一些问题请教下各位 V 友:
- 通过
pstree 32765 -np
可以看到 fpm 的进程结构如下图,这里的父进程( 32765 )在 fork 了子进程后,还会处理请求吗?还是只负责管理子进程?php-fpm(32765)─┬─php-fpm(508) ├─php-fpm(2527) └─php-fpm(3344)
- 子进程在处理完一个请求后会退出吗? fpm 除了在达到
pm.max_requests
和pm.process_idle_timeout
的预设值退出外,还会在什么机制下退出呢? fpm 的一个子进程会在一个请求生命周期结束后处理新的请求吗? - 常说一个应用程序就是一个进程,像 Nginx 或 php-fpm 又会 fork 多个子进程,那此时的 Nginx 和 PHP 是有几个进程呢? 1 个吗?因为子进程都由父进程管理?
- 每个进程都有独立的文件描述符表, 我看默认大小是 1024 ,如果一个请求依赖打开超过 1024 个资源,那是不是这个请求就无法正常处理了呢?
- 当 fpm 通过 tcp 的方式与 Nginx 通信时,默认的 fpm 端口是 9000 ,不同的子进程是如何都通过 9000 和 Nginx 通信的呢?还是子进程有不同的端口呢?
大佬有話說 (5)