高负载,非常繁忙的内容流服务器的最佳sysctl.conf配置是什么?服务器从Amazon,s3等远程服务器获取内容,然后使用php将内容动态流式传输给用户,而无需将其保存到硬盘上。php使用CURL提取文件,然后使用flush()同时传输它,因此硬盘驱动器工作量不大……仅网络和带宽。
该服务器是四核xeon,具有1Gbit全双工NIC,8gb RAM和500GBx2的RAID。服务器内存使用率和cpu负载非常低。
我们在其上运行debian lenny和lighttpd2(是的,我知道它尚未发布:-))与php 5.3.6和带有spawn-fcgi的php fastcgi绑定在4个不同的Unix套接字上,每个套接字有20个孩子。最大fcgi请求为20,而lighttpd2配置中的mod_balancer模块可在SQF(短队列优先)配置中的这4个套接字之间平衡fastcgi请求。
我们的服务器使用大量带宽,即网络连接一直很忙。在100到200个并行连接之后,服务器开始减速,最终变得无响应,开始出现连接超时错误。当我们使用cpanel时,我们永远不会出现超时错误,因此这不是脚本问题。它必须是网络配置问题。
lighttpd2配置:工作进程= 8,保持活动请求为32,保持空闲超时为10秒,最大连接为8192。
我们当前的sysctl.conf内容为:
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
# Increase maximum amount of memory allocated to shm
kernel.shmmax = 1073741824
# This will increase the amount of memory available for socket input/output queues
net.ipv4.tcp_rmem = 4096 25165824 25165824
net.core.rmem_max = 25165824
net.core.rmem_default = 25165824
net.ipv4.tcp_wmem = 4096 65536 25165824
net.core.wmem_max = 25165824
net.core.wmem_default = 65536
net.core.optmem_max = 25165824
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# you shouldn't be using conntrack on a heavily loaded server anyway, but these are
# suitably high for our uses, insuring that if conntrack gets turned on, the box doesn't die
# net.ipv4.netfilter.ip_conntrack_max = 1048576
# net.nf_conntrack_max = 1048576
# For Large File Hosting Servers
net.core.wmem_max = 1048576
net.ipv4.tcp_wmem = 4096 87380 524288
sysctls
。检查进程是否阻塞,内存不足等strace
,并查看原因/挂起的位置。