如何判断:是nginx还是PHP-cgi比较慢?

我运行一个网站,交通很多。 我使用nginx和php fast-cgi。 但是,当在浏览器中加载简单的php文档时,加载页面之前需要5-6秒的时间。 有时甚至会导致“404找不到”nginx错误。

在debian上使用“htop”时,我远不及使用服务器的资源。 发生什么了? 这是nginx吗? 它是PHP的快速CGI? 我不知道瓶颈在哪里。

我的nginxconfiguration的一个片段:

用户www-data www-data;
 worker_processes 2;

事件{
     worker_connections 4048;
 }


 http {
    包括mime.types;
     default_type application / octet-stream;
    发送文件;
     #tcp_nopush在;
     keepalive_timeout 10;
     include / usr / local / nginx / sites-enabled / *;
 ...
 }

我的fast-cgiconfiguration的一个片段:

 EXEC_AS_USER = WWW的数据

 #FASTCGI-Listener的主机和TCP端口(默认:localhost:9000)

 FCGI_HOST =本地主机
 FCGI_PORT = 9000

 #环境variables,由PHP处理

 PHP_FCGI_CHILDREN = 8
 PHP_FCGI_MAX_REQUESTS = 0

非常感谢你!!

多lessstream量? 只是一些提示:

  • 尽可能地使用caching
  • 工作进程的数量可以等于CPU核心的数量
  • 尽早closures实时连接或完全禁用它们(试着让我们说keepalive_timeout 5
  • 每个连接都需要一个文件句柄worker_rlimit_nofile 20000;
  • 1秒内可以服务的用户总数(大约) = worker_processes * worker_connections/ (keepalive_timeout * 2)
  • 禁用访问日志,除非你真的需要它们
  • 使用平衡器(如果一台服务器不可行)

安静的服务器,放在所有的PHP和Nginx进程strace,请尝试请求,并观察它在等待。

另外,找一个用于PHP的分析工具,并收集一些数据。

  1. 尝试将FastCGIconfiguration为unix套接字而不是Internet套接字。 在某些情况下,这可以节省多达20%的时间。
  2. 你可以把你的worker_processes提高到可用内核的数量。
  3. 检查你的php-fpmconfiguration,因为它有足够的选项来:
    • 杀死很长时间的运行请求;
    • 报告长时间运行的请求。
  4. 将PHP_FCGI_MAX_REQUESTS更改为与1000相关的内容。仅用于内存损坏的情况。