uwsgi nginx高併發下報錯500

2021-10-16 16:52:45 字數 745 閱讀 7847

首先正常情況下是不會出現這樣的情況的,用jmeter測試3000併發呼叫介面,發現居然有20%的介面失敗,並且返回500;

1、首先我分析了aws的elb是否報錯,發現elb沒有問題

2、檢視uwsgi日誌,通過grep *** file | grep 500發現也沒有報錯資訊

3、最終檢視nginx error日誌發現錯誤日誌為:socket() failed (24: too many open files) while connecting to upstream

按照網上說的解決方案解決以後:

發現居然只有不到50%的成功率了

再次檢視aws elb,發現elb那邊報錯5xx居然有1k多個,寧外還有幾百個請求沒有到達elb,不知道是不是我jmeter的問題

這邊我重新修改了jmeter的超時時間重新進行測試,發現還是有問題,於是我檢視nginx的error日誌發現

1024 worker_connections are not enough

上面明明修改了linux的設定,但是顯然不生效,於是我又修改nginx的配置檔案

將events

再次測試

這次終用調整好了,接下來是部署多台伺服器進行測試

高併發下搶購

了解高併發以及怎麼處理後,測試一下專案中下單的 邏輯很簡單,goods表中stock設定為unsigned。剛開始你可能會覺得這樣會出現超單的情況,但是測試後,沒有出現超單的情況。看似沒有問題,但是看過日誌發現問題還挺多的。這之前請看下這篇文章裡面有處理高併發下單的情況。goods id num g...

高併發下的HashMap

1.hashmap在插入元素過多的時候需要進行resize,resize的條件是 hashmap.size capacity loadfactor。2.hashmap的resize包含擴容和rehash兩個步驟,rehash在併發的情況下可能會形成鍊錶環 hashmap進行儲存時,假設size超過當...

高併發下的MySQL

對於遊戲來說,db存在大量的insert update 可謂玩家的很多動作都會與db溝通。本文暫時忽略os 中的 io利用率,網絡卡流量,cpu變化情況,介紹如何檢視mysql部分引數 檢視每秒事務數 show global status like com commit show global st...