我们有一个用PHP编写的非常轻量级的跟踪脚本,运行在Apache / 2.2.14(Ubuntu)上。该脚本将接收大量并发连接,但每个连接都会很快。目前,我们正在使用prefork,配置如下:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 600
MaxClients 600
MaxRequestsPerChild 0
我们也有KeepAlive Off
我已经玩了很多这些设置,并且已经使用apache基准测试了。无论何时我用ab引发并发连接,我都会得到“apr_socket_recv:对等连接重置(104)”。我还提出了文件描述符的最大数量。
我想知道是否有任何阿帕奇大师可以指出我正确的方向进行这种类型的设置(大量的轻量级连接)。 StartServers,Min / MaxSpareServers等的最佳值是多少?工人MPM值得研究吗?欢迎任何想法。
答案 0 :(得分:4)
我可以给你一些提示:
StartServers
,MinSpareServers
和MaxSpareServers
。否则Apache正在very low speed创建一个新的分支:父进程以每秒1的最大速率创建新子进程。
如果您认为您的服务器可以处理600个分叉,那么请使用RAM,创建600个分支,并可能将MaxRequestsPerChild
设置更改为3000,以便有时删除并重新创建旧分叉(避免使用memleaks) 。您不会在fork创建速率中随时丢失,并且Apache不会在管理创建和删除子项时随时丢失。
memory_limit
设置为一个PHP进程的最大大小。