《葉問》第9期

tplinux發表於2018-12-09

2018年10月23日,週二

MongoDB伺服器CPU一直很高,最高達到900%,可能是哪些原因?

答:可能原因如下:

1、高併發場景下,伺服器開啟numa
2、mongo查詢無索引,消耗大量記憶體和io
3、伺服器硬體故障,例如CPU 記憶體 raid卡等
4、高併發寫入下開啟讀寫分離+oplog應用加鎖
5、高併發短連結+最新SCRAM-SHA-1認證的情況

2018年10月30日,週二

MySQL執行環境中,當發現系統已經用到了swap,該怎麼處理?

答:一般來說,發生swap的原因是系統認為記憶體不夠了

那麼,當實體記憶體真的不夠了,或者著名的NUMA都是引起swap的可能原因。通常的應對方法有幾種:

1、通過BIOS、系統核心引數關閉NUMA,或者在mysqld啟動時,利用numactl關閉NUMA的使用
2、調低系統使用swap的權重,設定核心引數 引數 vm.swappiness 不高s 不高於10
3、Linux下使用free命令檢視記憶體使用情況,確認是否發生了記憶體洩露,可以去微信公眾號「老葉茶館」中傳送“OOM”
4、修改MySQL引數innodb_flush_method = O_DIRECT,這樣InnoDB在讀寫物理資料的時候會繞過cache來訪問磁碟
5、優化SQL效率,避免產生額外的分組、排序、臨時表情況發生,參考文章:文章:http://t.cn/EwLIuFv
6、在【夜間或業務不繁忙】時適合執行 swapoff -a,並執行sync重新整理作業系統記憶體髒頁到硬碟

2018年11月1日,週四

大量SQL語句文字,如何快速匯入到MySQL中?

1、可在SQL文字前,新增set session sql_log_bin=0(需要在從庫也匯入一次)。
2、匯入期間臨時修改引數sync_binlog=10000、innodb_flush_log_at_trx_commit=0、innodb_autoinc_lock_mode=2。
3、匯入前,根據業務情況看能否刪除除了自增列主鍵外的其他索引。
4、將SQL檔案切割成多份,再併發多執行緒匯入。
5、若該SQL檔案是每個INSERT一行,需要先行將多行合併成一行,即啟用extended-insert模式。
6、以上建議,線上上環境請謹慎評估該騷操作的風險性。
7、以上建議,僅考慮儘快匯入,涉及到和具體業務需求相沖突時(例如太快匯入反倒會影響線上資料庫效能),以實際情況為主。


相關文章