程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql服務器內存耗盡,並占用大量swap

mysql服務器內存耗盡,並占用大量swap

編輯:關於MYSQL數據庫
1.相關配置
    1)服務器配置:
         cpu:{Intel(R) Xeon(R) CPU  E5640  @ 2.67GHz}*16
         mem:47
    2)MySQL innodb:
          innodb_buffer_pool_size = 36G
2.#free -g
                  total       used       free     shared    buffers     cached
Mem:            47         46          0          0                0          6
-/+ buffers/cache:      39          7
Swap:              7          4          3
3.#vmstat -a -S M 4
procs -----------memory----------      ---swap-- -----io----     --system-- -----cpu------
 r  b   swpd   free      inact active       si   so    bi    bo   in   cs us sy id wa st
 0  0   4741    158    12973  34467    0    0    34    78    1    0  1  0 99  0  0
4.#top
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM   TIME+  SWAP CODE DATA   COMMAND                                                
12713 mysql  15   0 40.8g  38g  12m S  0.7 82.1   1209:31 2.1g 7660  40g MySQLd                                                 
50385 sshan  15   0 11808 1128  772 R  0.3  0.0   0:00.04  10m   56  604 top  5.總結:
從top命令可看出:
1)MySQL進程 ,總共需要的內存為40G(DATA 40g),
2)MySQL進程,被 置換的虛擬內存大小為2.1g(SWAP 2.1g)
3)MySQL進程,程序碼占用內存大小為 7660(kb)
4)MySQL進程,非程序碼占用內存大小為 40g
綜上所述,Linux服務器操作系統本身cache掉的內存大小約為6G左右。6.業務運行環境:MySQL數據量為115G,會頻繁進行大批量的數據導入,數據讀取。相當於一個小型的數據倉庫。7.影響:詳細請看 High.Performance.MySQL_Second.Edition
8.解決:
詳細請看 High.Performance.MySQL_Second.Edition
   1)操作系統
         修改swappiness參數,讓操作系統盡可能最大程度利用物理內存,而非虛擬內存
         $cat /proc/sys/vm/swappiness
          60
         $echo 0> /proc/sys/vm/swappiness
   2)數據庫
       (1) 修改數據庫存儲引擎讀寫數據的方式: 使用innodb_flush_method=0_DIRECT.
             這個參數只對Innodb引擎起作用
       (2)使用大頁內存:large page。(MySIAM,Innodb)
       (3)使用memlock配置(問題很多,謹慎使用。具體參考文檔)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved