近期進行了應用集成專案性能等方面的測驗,主要對系統穩定性、并發、部署、負載、高可用、灰度升級測驗以及資料大批量的測驗,在測驗過后發現測驗結果不盡如人意,系統的并發以及Redis讀寫達不到指定的要求,經過排查發現是Nginx沒有調優導致,在調優后達到了預期效果,
經過以上事件對影響性能等因素進行了排查以及優化,主要對產品的配置、系統、JVM、Redis、Nginx以及資料庫方面進行優化,具體優化點以及說明詳見下文,
1整體說明
本章主要針對測驗的主要內容、測驗的ESB應用集成流程具體實作情況以及遇到問題應該如何處理等進行詳細的說明,
1.1測驗思路
在測驗時主要針對1千條、1萬條、10萬條、100萬條、1000萬條資料級別進行測驗驗證,測驗分為兩個模塊,具體如下:
1.對環境進行優化,分別優化主資料及ESB的CPU、記憶體,并對Redis、JVM、CentOS、Nginx等進行優化;
2.對每個數量級進行ESB層面測驗,先用代碼構造對應的入參,在使用ESB資料配接器中的資料插入組件記錄每個數量級的同步時間;
3.復制原有集成流程,加入主資料調度介面進行資料的同步,記錄同步時間,并于資料庫批量插入同步時間進行對比,查看是否是因為同步介面降低了同步時效;
4.對測驗結果進行總結,將相關問題反饋至產品負責人員進行優化,并進行再次測驗,
1.2部署架構
測驗環境整體部署架構如下:

本次測驗以及性能調優主要針對K8S集群配置下進行測驗,對網路層Nginx、Ridis、容器中的產品的JVM等內容進行優化,
1.3測驗程序
測驗流程主要是針對不同資料量級別對ESB資料插入性能等進行測驗,主要測驗100W條及1000W條資料的寫入測驗,具體流程如下:
1.批量處理具體流程如下:

a)初始化操作記錄資料起始時間;
b)查詢出1千/1萬條資料,并進行記錄;
c)資料庫直接批量資料插入;
d)記錄截止時間并進行時間計算,
2.回圈批量處理流程如下:

a)初始化操作記錄資料起始時間;
b)使用Java轉換節點構造1萬條資料;
c)資料庫直接批量資料插入;
d)索引自增長并進行回圈;
e)構造集成日志引數并記錄流程執行時間,
1.4調優內容
本次性能調優主要對產品、資料庫、Nginx、Redis、CentOS、記憶體CPU等進行調優,具體調優程序如下,
2產品調優
產品調整程序主要對資料庫連接數、日志級別調整、產品快取調整、執行緒引數調整、JVM性能調整以及CPU、記憶體等進行擴充,具體調整如下,
2.1資料庫連接數
主要對資料庫連接hotweb.properties檔案進行調整,調整資料庫最大連接數和空閑連接數,
檔案位置:/webapps/bpm/WEB-INF/classes
調整樣圖:

2.2日志級別調整
Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG,通過在這里定義的級別,可以控制到應用程式中相應級別的日志資訊的開關,比如在這里定義了INFO級別,則應用程式中所有DEBUG級別的日志資訊將不被列印出來,程式會列印高于或等于所設定級別的日志,設定的日志等級越高,列印出來的日志就越少,如果設定級別為INFO,則優先級高于等于INFO級別(如:INFO、WARN、ERROR)的日志資訊將可以被輸出,小于該級別的如DEBUG將不會被輸出,
調整日志級別將日志級別debug調整為info,樣圖如下:

2.3產品快取調整
在ServiceContext.xml中使用Redis快取,不要使用本地快取,注解掉本地快取,使用redis快取,
調整檔案目錄:/webapps/bpm/WEB-INF/classes

2.4執行緒引數調優
調整server.xml檔案,調整執行緒池,引數說明:
1.maxThreads:最大執行緒數,大并發請求時,tomcat能創建來處理請求的最大執行緒數,超過則放入請求佇列中進行排隊,默認值為200;
2.minSpareThreads:最小空閑執行緒數,任何情況都會存活的執行緒數,即便超過了最大空閑時間,也不會被回收,默認值4;

2.5JVM性能調整
調整JVM記憶體大小,調整內容如下:

檔案位置:/bin
具體引數說明:


注意:慎用最小限制選項Xms、PermSize以節約系統資源,
2.6CPU記憶體調整
調優方面主要使用UMC對主資料、ESB等進行CPU及記憶體擴充,調整記憶體為4G—8G,主資料方面:

ESB方面調整同上:

3系統調優
系統調優主要調整sysctl檔案,通過調整其內核配置,從而對CentOS進行調優,
3.1引數說明
具體引數說明如下:


3.2其它說明
在上述基礎上還可以進行SYN洪水保護、避免放大攻擊的設定、增加系統檔案描述符限制等其它設定,具體說明如下:



3.3調整程序
對CentOS進行調優,調整sysctl.conf檔案,

之后按照上述說明增加如上配置,之后使組態檔生效即可,

4其它調優
主要對Redis、Nginx等進行優化,具體優化程序如下,
4.1Redis調優
通過調整Redis組態檔對Redis進行調優,

添加、修改配置:

需要關閉redis實體節點,重啟后生效,

驗證方法:

輸入“info”命令查看已經改為5G記憶體,已啟用allkeys-lru模式,
4.2Nginx調優
Nginx方面調整使用epoll模式、調整最大連接數、超時時間、請求頭緩沖區、請求體緩沖區等等,

4.3資料庫調優
服務器優化主要是為了提高服務器本身的性能瓶頸,保證資料庫在優化程序中不會因為服務器性能瓶頸影響到資料庫的性能調整沒有生效,提高資料庫的優化空間,因此在資料庫優化配置程序中,要根據服務器性能做適當調整,保證在合理范圍之內能夠生效,提高資料庫的效率,資料庫優化本次主要調整my.cnf檔案,


5心得體會
通過本次的大批量資料同步測驗驗證使自身在性能調優等方面有了一定的提升,同時也總結了一些心得,現從檔案記錄、意識形態以及技識訓累層面總結如下,
5.1檔案記錄
在作業學習程序中通過不斷地記錄檔案,可以從多方面提升自身的綜合能力,一方面可以感覺得到自己的邏輯思維有了很顯著的提升,尤其是在記錄教程類的檔案時,例如某些系統的使用手冊,可以重新梳理一遍系統的技術要點,通過對系統的梳理,程序中可以不斷提高自己的邏輯思維能力,一方面在有了清晰的邏輯思路后,對自己的技術能力和水平都有了系統的提升,同時撰寫檔案也是一個總結、反思的程序,能夠幫助個人促進深入思考的能力,
5.2意識形態
通過查閱現有Nginx、Redis等調優的記錄檔案,發現檔案中有一些內容需要優化,伴隨著自身專業知識的不斷積累,對知識的認知也不斷提高,當回過頭來看自己之前記錄的作業檔案,會發現有很多漏點存在,這時就需要再次完善作業檔案了,在這個完善的程序中又把初學時的理解和當下做了比較,可以了解到當時的自己有哪些不足,思維邏輯有了怎樣的改善,技術、認知在不斷地更新,作業檔案也在不斷地更新,在這個不斷迭代更新的程序中,使自己的知識點不知不覺連成了線,
5.3技識訓累
本次資料同步驗證使自身Linux系統調優方面有了一定的提升,同時也暴露了自己在調組態檔不仔細所產生的問題,不能僅停留于敲代碼的層面,在日常的作業程序也是一樣,在后續的學習作業程序中要避免此類問題重復發生,
Linux系統作為目前服務器端最常用的系統,學好它的重要性不言而喻,作為一款字串操作為主流的系統,想要學好Linux其實并不用容易,想要熟練掌握,也需要投入很多的精力,只有不斷地學習積累才能使自身知識體系更加完善,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327935.html
標籤:其他
下一篇:什么是IGMP協議?
