来新公司果酱文化任职CTO,看到代码性能差,设备成本很是高,因而着手改造,其中有个脚本,须要机器人模拟多个用户行为,老的作法,为每一个用户建立一个PHP进程。一共300我的,建立了300个进程,进程间的频繁切换,致使内存占用极高,最近产品经理须要增长模拟用户数到几千人,老的进程方式已经没法知足需求,因而采用swoole协程去改造。用到框架ycroute(轻量级基于swoole协程的websocket框架):
https://github.com/caohao-php/ycsocket
下面列出改造先后的性能对比:php
关掉流量,并把 PHP-FPM 进程 和 Nginx 进程杀掉以后的一个负载
原内存=12.5%
系统占用内存=6.3% = 516Mgit
内存占用24%,去掉系统占用 6%以后(不太肯定32G内存须要6%不),内存为 18% x (32G x 1024) = 5.9G 内存占用。github
内存占用38%,去掉系统占用 6%以后(不太肯定16G内存须要6%不),内存为 32% x (16G x 1024) = 5.2G 内存占用。web
内存占用7.2%,去掉系统占用 6%以后,内存为 1.2% x (8G x 1024) = 98M 内存占用。websocket
在流量大增的状况下,4核8G的机器就能够搞定需求,并且系统负载更低。swoole