我有一个nginx 1.4.5 web服务器与运行在我的服务器上的php-fpm 5.5.7,但如果我的服务器保持闲置一段时间,访问它是非常缓慢的。 得到响应(第一个字节)需要大约10-20秒,之后再快速。 我不知道为什么需要一段时间后回访第一次访问。 我试了两个unix套接字和tcp,没有效果。 inheritance人我的configuration:
NGINX:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1000; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65s; keepalive_requests 1000; gzip off; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
我的PHP标准configuration:
include=etc/fpm.d/*.conf [global] error_log = log/php-fpm.log log_level = notice emergency_restart_threshold = 10 emergency_restart_interval = 1m process_control_timeout = 10s
现在需要时间来响应的池(第一个字节):
[myweb] ;listen = /usr/local/etc/sockets/myweb.socket listen = 127.0.0.1:9001 listen.owner = max listen.group = max listen.mode = 0666 user = max group = max listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.status_path = /status pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 200 slowlog = /home/max/logs/max.slow.log pm.status_path = /status request_terminate_timeout = 120s rlimit_files = 131072 rlimit_core = unlimited catch_workers_output = yes php_admin_value[default_charset] = UTF-8 php_value[error_reporting] = 2147483647 php_admin_flag[display_errors] = On php_admin_flag[display_startup_errors] = On php_admin_value[error_log] = "/var/tmp/php.max.error.log" php_admin_value[log_level] = DEBUG php_admin_value[upload_max_filesize] = 10M php_admin_value[post_max_size] = 10M php_admin_value[max_execution_time] = 60
服务器技术细节:
AMD Athlon(tm) 64 X2 Dual Core Processor 3400+ 4GB RAM 500 GB RAID1 HDD website runs on MySQL 5.5.35 nginx 1.4.5 php-fpm 5.5.7
时间线pic浏览器第一个字节等待22秒。 接收内容只需要86ms。 所以这一定是服务器(nginx / php-fpm): 
该网站运行在用户主文件夹,用户是最大的。 一切工作正常。 没有缓慢的日志文件生成,没有PHP错误,没有nginx错误。
为什么在世界上它的第一个字节缓慢?
更新2:
将nginx的错误日志设置为DEBUG,只给了我一些有关匹配的信息。 但是在我打电话给url之后,我用“tail -f”打印了3条日志条目,所以nginx像往常一样正常工作,在redirect到php脚本之后,大约需要15-20秒钟我得到我的回应和更多的日志打印。 所以无论是PHP的FPM,或MySQL。 我想知道如何“重置”我的服务器,所以我可以很容易地重现长的第一个字节的响应。 我想它的caching结果或东西,并在第一次调用后使用它,如何杀死caching,所以我可以testing。 因为我只能在3或4个小时内testing一次,所以我必须等待,然后才能再次尝试获取缓慢的第一字节响应。
该死的,这是CMS本身,而不是我的代码在CMS上运行。 我正在使用Contenido(一个易于使用的CMS),但它有一个名为“PseudoCron-Jobs”的东西,并且有很多它们在一段时间之后被执行。 他们大多数我不需要,所以我禁用他们。 现在它快了。
因此,无论谁想要使用Contenido,请检查contenido / cronjobs文件夹并禁用crontab.txt文件中的某些文件以跳过实际不需要的内容。
使用PHP-FPM 5.5.7和MySQL 5.5的NGinx 1.4.5运行良好。 🙂