我有一台服务器运行Apache/2.2.22(Debian),PHP 5.6.17作为FPM和MySQL 5.6.25.
该项目使用名为Redaxo的CMS运行(我认为它不重要,但无论如何我会告诉你).在Redaxo中有一些功能需要一些时间(例如删除缓存并重建它需要1-2分钟).在这个时候,当其他用户进入网站时,FPM与a崩溃,500 Internal Server Error我必须多次重新加载页面,直到服务器错误消失并且过程完成.
我注意到只有当同一时间有太多用户在网站上并且只有在繁重的操作完成时才会发生这种情况.
10个用户同时只是冲浪=没问题
10个用户同时只是冲浪,而缓存删除= 500个错误.
我通过禁止除了我以外的所有人的网站检查了这个(.htaccess deny/allow with ip).然后我做了沉重的操作,没有问题.一旦多人再次访问该网站,问题就出现了.
会是什么呢?你需要我什么信息?
这些值在中设置(未注释) php-fpm.conf
[global]
pid = /run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
emergency_restart_threshold = 0
include=/etc/php5/fpm/pool.d/*.conf
Run Code Online (Sandbox Code Playgroud)
这些值在项目特定中设置(未注释) fpm.conf
[projectname]
user = projectname
group = projectname
listen = /var/run/php5-fpm-projectname.sock
listen.owner = projectname
listen.group = projectname
listen.mode = 0660
pm = dynamic
pm.max_children = 150
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30
chdir = /
php_value[upload_max_filesize] = 128M
php_value[max_post_size] = 128M
php_value[max_execution_time] = 180
php_value[memory_limit] = 256M
Run Code Online (Sandbox Code Playgroud)
它失败的脚本在MySQL和文件创建方面有很大帮助吗?但它很大,所以我不确定我是否应该在这里贴出来?或者如果它甚至是问题?
apache错误日志说明了这一点
[Tue Feb 09 10:54:01 2016] [error] [client {IP}] (104)Connection reset by peer: FastCGI: comm with server "/fcgi-bin-php5-fpm-projectnmae" aborted: read failed
[Tue Feb 09 10:54:01 2016] [error] [client {IP}] FastCGI: incomplete headers (0 bytes) received from server "/fcgi-bin-php5-fpm-projectnmae"
Run Code Online (Sandbox Code Playgroud)
或这个
[Tue Feb 09 11:00:46 2016] [error] [client {IP}] FastCGI: incomplete headers (0 bytes) received from server "/fcgi-bin-php5-fpm-projectname"
[Tue Feb 09 11:00:48 2016] [error] [client {IP}] (104)Connection reset by peer: FastCGI: comm with server "/fcgi-bin-php5-fpm-projectname" aborted: read failed
Run Code Online (Sandbox Code Playgroud)
该fpm-log说的下面.当然总是不同的时间
[10-Feb-2016 09:40:59] WARNING: [pool projectname] child 10970 exited on signal 7 (SIGBUS) after 50.186611 seconds from start
[10-Feb-2016 09:40:59] NOTICE: [pool projectname] child 11092 started
Run Code Online (Sandbox Code Playgroud)
有时候会有这样的警告
[09-Feb-2016 11:00:41] WARNING: [pool projectname] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 6 total children
[09-Feb-2016 11:00:42] WARNING: [pool projectname] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 7 total children
Run Code Online (Sandbox Code Playgroud)
这里有一些调试信息
[18-Feb-2016 17:42:01] WARNING: [pool projectname] child 9088 exited on signal 7 (SIGBUS) after 70.130564 seconds from start
[18-Feb-2016 17:42:01] NOTICE: [pool projectname] child 9205 started
[18-Feb-2016 17:43:55] WARNING: [pool projectname] child 9099 said into stderr: "NOTICE: PHP message: PHP Notice: Undefined offset: 1181 in /var/www/projectname/htdocs/redaxo/include/classes/class.ooarticle.inc.php on line 44"
[18-Feb-2016 17:43:55] WARNING: [pool projectname] child 9099 said into stderr: "NOTICE: PHP message: PHP Warning: Invalid argument supplied for foreach() in /var/www/projectname/htdocs/redaxo/include/classes/class.ooredaxo.inc.php on line 134"
[18-Feb-2016 17:43:55] WARNING: [pool projectname] child 9099 exited on signal 7 (SIGBUS) after 183.838886 seconds from start
[18-Feb-2016 17:43:55] NOTICE: [pool projectname] child 9330 started
[18-Feb-2016 17:44:00] WARNING: [pool projectname] child 9101 exited on signal 7 (SIGBUS) after 188.987954 seconds from start
[18-Feb-2016 17:44:00] NOTICE: [pool projectname] child 9336 started
Run Code Online (Sandbox Code Playgroud)
这可能只是 MySQL 服务器的某些锁定问题造成的。
您必须在延迟期间连接到 MySQL 主机。
如果无法连接,则说明您已超出 MySQL 服务器或用户允许的并发连接数
如果可以连接,则必须查看 mysql 命令“show processlist”返回的内容。现在你有2个选择:
许多“等待查询缓存锁定”:这将要求您更改一些 MySQL 服务器配置。(这可能是由于查询缓存过大造成的)
您有一个需要占用所有资源的请求,您必须对其进行优化。
| 归档时间: |
|
| 查看次数: |
5722 次 |
| 最近记录: |