关于sphinx+PHP在高并发时响应性能低下的解决办法
来源:互联网 发布:大连交通大学软件宿舍 编辑:程序博客网 时间:2024/06/10 13:16
经过多次压力测试,发现sphinx在高并发时出现负载突然提升,并且响应速度明显下降。经过多方面的排查,发现是由于PHP与sphinx自带的searchd进行socket的连接之后,系统内存有大量的Time_Wait连接,所以我们猜测为searchd的socket连接未及时关闭,造成大量请求堆积,使得PHP客户端与sphinx的请求效率低下。由于searchd是编译好的,无法进行OPT设置,故我做了内核调整,来优化socket连接释放时间,具体参数如下
vi /etc/sysctl.conf
net.ipv4.tcp_timestamps=1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1
说明:
net.ipv4.tcp_timestamps = 1 表示开启对于TCP时间戳的支持,若该项设置为0,则下面net.ipv4.tcp_tw_recycle的设置将不起作用;
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
再执行以下命令,让修改结果立即生效:
/sbin/sysctl -p
用以下语句看了一下服务器的TCP状态:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
虽然这样修改之后还是会有很多的TIME_WAIT连接,但性能已经比之前的提升很多。
以下为修改之前的请求:
#webbench -c 300 -t 30 http://192.168.1.29/sphinx/sphinx_nocache.phpWebbench - Simple Web Benchmark 1.5Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.29/sphinx/sphinx_nocache.php300 clients, running 30 sec.
Speed=66986 pages/min, 290593 bytes/sec.Requests: 33493 susceed, 0 failed.以下为修改之后的测试结果:
#webbench -c 300 -t 30 http://192.168.1.29/sphinx/sphinx_nocache.phpWebbench - Simple Web Benchmark 1.5Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.29/sphinx/sphinx_nocache.php300 clients, running 30 sec.
Speed=91326 pages/min, 398190 bytes/sec.Requests: 45663 susceed, 0 failed.可以明显的看到效率的明显提升
- 关于sphinx+PHP在高并发时响应性能低下的解决办法
- [转载]PHP 在 IIS 6 上面性能低下的解决
- 利用apache-ab检测nginx在高并发情形下的响应性能
- 关于高并发高性能的几点思考
- Sphinx高性能实时索引的解决方案
- 关于SQL SERVER高并发访问的解决办法
- 关于SQL SERVER高并发访问的解决办法
- 关于SQL SERVER高并发访问的解决办法
- 关于SQL SERVER高并发访问的解决办法
- 关于Servlet的并发响应
- 关于Servlet的并发响应
- 关于Servlet的并发响应
- 关于php高并发解决的一点思路
- 关于php 高并发解决的一点思路
- 高并发性能的提升
- 使用google-perftools优化nginx在高并发时的性能完整教程[第二版]
- 使用google-perftools优化nginx在高并发时的性能
- Sphinx高性能的搜索引擎(简单、强大、实用)
- Cisco之SPAN
- leetcode代码分类汇总之-排序
- WPF初学者之 XAML的资源(Resources)结构
- Objective-C单例模式例子
- 解决win7下安装Oracle8.17乱码问题
- 关于sphinx+PHP在高并发时响应性能低下的解决办法
- 在ios中避免键盘遮挡了输入框的处理
- 推荐OpenResty-各个模块作用
- 十大滤波算法程序大全
- windows.h与winsock2.h的引用顺序
- 如何优化数据库查询
- windows 内存映射文件
- eclipse批量更改文件编码
- 淘宝技术这十年——光棍节的狂欢