压测过程中,CPU和内存占用率很高,案例简单分析
Q: 最近公司測試一個接口,數據庫采用Mongo
并發策略:并發400個用戶,每3秒加載5個用戶,持續運行30分鐘
數據量:8000條左右
壓測結果發現:
TPS始終在5左右
而CPU高達99%,內存使用情況也高達1.7G
網卡流量145K
請問這種情況,是哪里的性能出現問題?
A:你這個CPU和內存監控的得是web服務器 就是部署程序的機器。
1、嘗試查看出現這類情況時候數據庫process,看看是否是當時進程到達了所設置的進程數上限。如果是則調整數據庫進程數上限再測試
2、嘗試查看程序連接池設置的最大連接數,如果程序設置的最大連接數上限很小,調整上限在測試看看
進程排隊是合理現象,但是需要在當前硬件環境下,將其控制在可接受范圍內。
如果經過調整過數據庫進程上限和最大連接數,仍然無法解決問題,找到你的腳本
假設你的腳本順序是(其中a,b,c代表的是程序模塊)
web_submit_data(a);
web_submit_data(b);
web_submit_data(c);
分別找出他們在analysis中的響應時間,按照順序從第一個響應時間長的系統模塊開始調優,就是調整程序的算法或者SQL。假如響應時間 b>c>a,那么就先調整b,之后再測試。因為有可能是由于b排隊導致c無法正常執行所以才響應時間漫長的。
以上僅供參考,沒有用過mongodb,數據庫進程數我參考的是oracle進程數的調整。
Q: 1.先說下這個接口是做什么的?你寫還是查?
2.你說的CPU高是前段還是DB服務器?
3.你的服務器架構啥樣?
這些最基本的要提供
A: 1. 接口是取數據GET操作
2. CPU高是應用服務器那臺機子的CPU高,數據庫沒有監測
3. 服務器架構采用nginx
A: 這個有幾種可能:
1.你的服務器出錯了,cpu很高,你可以查查日志
2.服務器處理能力很低,占用cpu很高,但是處理量很少
3.內存發生泄露,或者內存不能釋放,重復讀寫頻繁,導致內存持續增大,cpu無法處理
總結
以上是生活随笔為你收集整理的压测过程中,CPU和内存占用率很高,案例简单分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swift date 计算差_[Swif
- 下一篇: spring boot mybatis