性能优化

php并发优化

服务器配置 8核e5-2630L 2.4ghz, 16g内存 20MB带宽 问题场景描述 jemter 300并发开始出现502错误 CPU利用率60% 内存利用率50% 网络流量1MB到1.5MB 分析 cpu和内存利用率不高,网络也没有耗尽。肯定是卡在IO上了。 netstat查看TIME_WAIT,数量正常 opcache查看,已开启,没问题 详细查看压测错误,发现压测过程中出现"SQL Error 1040: Too Many Connection"。既然超过连接数,那就查看限制多少连接吧。 mysql参数 max_connections = 2000; # 2000连接,没毛病,问题不在这 到底有多少连接。一看也是惊呆了,大量的sleep连接没有释放。好了这就是原因了。 解决 系统内同时使用了laravel orm,和pdo对象。系统二开,为了方便增加了laravel orm。 那就看看是谁没关闭连接吧。 去掉所有laraval orm的数据库操作,去掉laravel orm连接创建方法。运行测试,发现还是会保留大量sleep mysql connection 去翻pdo创建代码 // 目测就是这个ATTR_PERSISTENT => true了 $this->connection = new \PDO...

基于Swoole重构OpenCart启动代码后性能测试

状况 打开webbench测试,200客户端,60秒。并发只有265page/min。 [root@li1205-86 ~]# webbench -c 500 -t 60 http://swoole-opencart.shyclouds.com/ Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://swoole-opencart.shyclouds.com/ 500 clients, running 60 sec. Speed=265 pages/min, 82524 bytes/sec. Requests: 265 susceed, 0 failed. 整体CPU利用率只有10%-15%。 解决 代码问题 开了8个进程,也启动了8个进程,但实际只有1个进程在干活。 一通google发现Swoole\Http\Server启动参数设置不对. $http = new Server("127.0.0.1", 9000, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $http->set(array( 'task_worker_num' =>...
执行时间: 45.680999755859 毫秒