更新:只关注长查询的缓存更新时间,它们不会与服务器崩溃时间冲突。
update2 :找到问题的原因。广告服务器已关闭,服务器挂起,即使我们似乎正确设置套接字超时。有没有办法测试超时行为?
我们的服务器非常繁忙。 〜3K并发连接 服务器有32GB RAM 2xCPU。我们有服务不可用的错误问题。 服务器没有响应500错误,错误日志显示数百/数千行:
[warn] mod_fcgid: can't apply process slot for /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper
我们认为它可能是配置错误或数据库连接/查询错误。 php进程更新缓存,这是一个非常复杂的查询结果。每天运行两次3个单独的查询。我启用了慢查询日志。我怀疑在我们的情况下查询是否超过了php运行时间限制20秒(在以下文件中设置)。任何帮助表示赞赏。
我们使用带有mod_fcgid的apache worker mpm模型。
这是fcgid.conf文件:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /var/lib/apache2/fcgid/sock
# Communication timeout: Default value is 20 seconds
IPCCommTimeout 20
# Connection timeout: Default value is 3 seconds
IPCConnectTimeout 3
和/etc/apache2/conf.d/php-fcgid.conf文件:
<IfModule !mod_php4.c>
#phd.ini的路径&lt; 96&gt;默认为/ etc / phpX / cgi DefaultInitEnv PHPRC = / etc / php5 / cgi
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.
# DefaultInitEnv PHP_FCGI_CHILDREN 8
# Maximum requests before a process is stopped and a new one is launched
DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1500
# Maximum number of PHP processes.
MaxProcessCount 45
# Define a new handler "php-fcgi" for ".php" files, plus the action that must follow
AddHandler php-fcgi .php
Action php-fcgi /fcgi-bin/php-fcgi-wrapper
# Define the MIME-Type for ".php" files
AddType application/x-httpd-php .php
# Define alias "/fcgi-bin/". The action above is using this value, which means that
# you could run another "php5-cgi" command by just changing this alias
Alias /fcgi-bin/ /var/www/fcgi-bin.d/php5-default/
# Turn on the fcgid-script handler for all files within the alias "/fcgi-bin/"
<Location /fcgi-bin/>
SetHandler fcgid-script
Options +ExecCGI
</Location>
Apache2 worker mpm config:
<IfModule mpm_worker_module>
StartServers 10
MaxClients 2048
ServerLimit 2048
MinSpareThreads 30
MaxSpareThreads 100
ThreadsPerChild 64
ThreadLimit 100
MaxRequestsPerChild 5000
我们查看了此网页上的说明并加载了高服务器配置: http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html
更新:只关注长查询的缓存更新时间,它们不会与服务器崩溃时间冲突。
update2 :找到问题的原因。广告服务器已关闭,服务器挂起,即使我们似乎正确设置套接字超时。有没有办法测试超时行为?
答案 0 :(得分:2)
google很好地解决了您的问题。看起来您必须使用配置(使用MaxProcessCount等选项)。
我建议用nginx替换apache。我的表现更好。此外,nginx使用的内存比apache少得多。我正在使用php-fpm来快速cgi。
答案 1 :(得分:1)
重启你的服务器。我用这种方式解决了这个问题〜
答案 2 :(得分:0)
移动 - &gt; nginx作为soons尽可能。 试试 - &gt;使用APC缓存用于分布式系统或文件缓存系统的单个服务器memcached 使用 - &gt;数据库索引正确。这是我经历过的最重要的事情之一。