來新公司果醬文化任職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