一次流媒体服务器的调优记录(Apache)

 

1. 问题

终端在与服务器通信中,使用网络接口的返回状态(比如登陆上报或者紧急插播, 均为轮询消息)来提示终端是否连接上服务器;

当多终端同时连接服务器时,出现终端连接超时的情况,导致apk频繁显示未连接上服务器。ping 服务器正常。

服务器使用的Apache。系统设计的终端数在500以内。

 

2. 分析

    a) 首先搭建压力测试环境, apachejmeter4.0, 模拟500个用户不停登陆。

    b) 观察系统的 tcp连接状态。

    #ss -lnt

    

     注:上面看到的第二列Send-Q 表示第三列的listen端口上的全连接队列最大为128,第一列Recv-Q为全连接队列当前使用了多少

     按照这个说法, 全连接队列过小, 需要放大。

      #netstat -s | egrep "listen|LISTEN"

    

root@ubuntu:/# netstat -s | egrep "listen|LISTEN"

    47500 times the listen queue of a socket overflowed

    48122 SYNs to LISTEN sockets dropped

root@ubuntu:/# netstat -s | egrep "listen|LISTEN"

    47555 times the listen queue of a socket overflowed

    48177 SYNs to LISTEN sockets dropped

    连续运行命令,数字一直增加,说明全连接队列持续满。

   参考文章:https://102.alibaba.com/detail/?id=140

解决办法: 尝试修改tcp_max_syn_backlog(半连接)和somaxconn(全连接)

#echo '1024'>/proc/sys/net/ipv4/tcp_max_syn_backlog

#echo '1024'>/proc/sys/net/core/somaxconn

重启服务器,再次使用上面命令,发现全连接队列变成了511? 说明修改有效,但是并不是我们需要的值。

百度-> 全连接队列的大小取决于:min(backlog, somaxconn), backlog 由int listen(int sockfd, int backlog);传入

 

说明apache服务器有限制,需要修改apache服务器配置。

c) apache 服务器配置修改,(Apache优化:修改最大并发连接数)

<IfModule mpm_prefork_module>
    ServerLimit             1024
    ListenBacklog           1024
    StartServers            20
    MinSpareServers         20
    MaxSpareServers         100
    MaxRequestWorkers       1024
    MaxConnectionsPerChild  10000
</IfModule>

首先找到 httpd.conf 关于mpm的选项

将“#Include conf/extra/httpd-mpm.conf”前面的 “#” 去掉,保存。

然后修改httpd-mpm.conf,找到当前系统使用的配置并修改,event/worker/prefork/mpm_winnt/mpm_netware之一。

prefork使用的配置,ListenBacklog 修改成1024,   ServerLimit和MaxRequestWorkers 修改成1024。

需要注意的是ServerLimit和MaxRequestWorkers 修改得过大可能会导致apache 不启动或不稳定。

详情:http://httpd.apache.org/docs/current/mod/mpm_common.html

           https://www.cnblogs.com/jukan/p/5830068.html

3. 总结

    通过增大系统tcp连接队列和apache mem配置,服务器的响应明显得到改善。

    经过一晚上时间测试,发现有时仍然会有少量连接超时的情况,下一步将继续优化php+mysql。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值