壓測發現接口響應較慢,代碼打日志發現接口執行時間月0.04s,通過修改uwsgi進程與線程數量可顯著影響響應速度及其分布。
結論:
壓測時並發請求較多,
如果uwsgi worker較少,可以很快響應到來的請求(0.04s),但剩余請求會堆積,等待uwsgi處理,所以這種情況下,響應時間小者很小,大者很大。
如果uwsgi worker較多,超過cpu核心數,則同時有很多請求被多個uwsgi處理,但這些worker會爭奪cpu資源,導致每個請求的處理都較慢,但多個請求處理完的時間相近,所以這種情況下,響應時間小者很大,大者卻不比小者大很多。
此外發現thunder-lock明顯拖慢響應速度。
參考:https://stackoverflow.com/questions/14962289/bad-django-uwsgi-performance
參考:https://stackoverflow.com/questions/34182465/what-are-uwsgi-threads-used-for
參考:https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
參考:nginx and uwsgi: large difference between upstream response time and request time