一次接口壓力測試qps極低原因分析及解決過程


一次接口壓力測試qps極低原因分析及解決過程

                                    <p>9-2日在做內部的性能測試相關培訓時,發現注冊接口壓力測試qps極低(20左右),這個性能指標遠不能達到上線標准&nbsp;,經過一系列調試,最后定位 98%的時間都花在對&nbsp;用戶&nbsp;表&nbsp;做update更新&nbsp;(時間達100ms以上)。</p> 

涉及sql語句:

update User set loginName='q'
where userId='ec171d27-f4a8-478c-b557-dffec8f00826'

分析問題思路:

1) userId字段沒有加索引 驗證: 連接數據庫之后查看表結構,確實沒有做索引。 方案: 給userId加上索引 結果: 未達預期,花費時間基本沒變化 分析: 觀察表的記錄數,才200多條,確實索引不索引對性能影響不會太大,但這個索引還是得加上,只不過沒有索引並不是產生這個問題的原因。

2) 數據表的引擎問題 驗證: 連接數據庫之后查看表結構,引擎為innodb。 方案: 換成myisam 結果: 達到預期,花費時間不到1ms, 再進行壓測,qps達1500以上 分析: 猜測是由於innodb配置導致,查看了my.cnf的配置,一切都用默認的配置,其中 innodbflushlogattrx_commit 默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush)硬盤,這是很費時的。

3) 換回innodb,優化配置 驗證: 連接數據庫之后查看表結構,引擎為myisam。 方案: 換成innodb, 把innodbflushlogattrx_commit設置為2 結果: 達到預期,花費時間不到1ms, 再進行壓測,qps達1500以上 分析: 結果驗證了之前的設想。

總結, innodb本身在設計上比myisam要先進些,但配置相對復雜,有很多優化的點,希望各位同學能多看些文章,理解innodb和myisam的區別以及innodb的優化方案。


                            </div>
                        </div>

原文地址:http://guangla.lofter.com/post/1d337f35_82fe535

posted @ 2019-06-04 17:12  星朝  閱讀( 1613)  評論( 1編輯  收藏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM