CPU 負載穩步增加,MySQL 1.5 GB 在臨時目錄中打開已刪除文件
我有一個執行 cPanel(共享託管伺服器)的 CentOS 伺服器,我之前遇到過 MySQL 問題,我花了一些時間配置和調整它,直到最終負載下降(從 170% !! 到 10% 左右),直到 2 天前 MySQL 開始瘋狂行事!
伺服器“卡住”了,特別是 Apache 和 MySQL!我登錄並檢查了
/tmp
目錄,df
它使用了 100% 的可用空間(2 GB),我執行du -h
它報告只有 129 MB 的已用空間!我不知道其他空間去了哪裡,我試圖lsof +L1
查看打開的文件,它在 temp 目錄中列出了一大堆打開的已刪除文件(其中大多數大小為 0),除了 MySQL 擁有的一個有 1.5 GB 的文件,我終止了該程序並釋放了空間。我不知道那個文件是什麼,因為我不知道如何訪問它所以是什麼導致了這個文件?
lsof +L
通常應該輸出什麼?這個輸出正常嗎?httpd 6450 nobody 559w REG 8,2 0 0 2492169 /usr/local/apache/logs/ssl_mutex (deleted) httpd 6450 nobody 560u REG 8,4 0 0 151 /tmp/ZCUDj2EaZi (deleted) httpd 6490 nobody 559w REG 8,2 0 0 2492169 /usr/local/apache/logs/ssl_mutex (deleted) httpd 6490 nobody 560u REG 8,4 0 0 151 /tmp/ZCUDj2EaZi (deleted) httpd 6528 nobody 559w REG 8,2 0 0 2492169 /usr/local/apache/logs/ssl_mutex (deleted) httpd 6528 nobody 560u REG 8,4 0 0 151 /tmp/ZCUDj2EaZi (deleted) mysqld 46096 mysql 4u REG 8,4 0 0 141 /tmp/ibvvhkQX (deleted) mysqld 46096 mysql 5u REG 8,4 432 0 143 /tmp/ibrHhJ9J (deleted) mysqld 46096 mysql 6u REG 8,4 0 0 144 /tmp/ibsWv8sw (deleted) mysqld 46096 mysql 7u REG 8,4 0 0 145 /tmp/ibjEeVSi (deleted) mysqld 46096 mysql 17u REG 8,4 0 0 146 /tmp/ibFo67JJ (deleted) httpd 47389 root 559w REG 8,2 0 0 2492169 /usr/local/apache/logs/ssl_mutex (deleted) httpd 47389 root 560u REG 8,4 0 0 151 /tmp/ZCUDj2EaZi (deleted)
大約有 100 個文件,但我不會全部發布。
它不是一個負載很重的伺服器,它甚至對於它所服務的網站來說非常強大,所以這肯定是一個錯誤配置或錯誤問題,這是我伺服器的資訊:
CPU:Intel(R) Xeon(R) CPU E31230 @ 3.20GHz/8MB 記憶體 RAM:16 GB 作業系統:CENTOS 6.4 MySQL:5.1.68
有時 MySQL 的 CPU 使用率會達到 100% 以上,並且
mysqladmin show processlist
在只顯示少數程序的情況下穩步增加,這是我的 my.cnf 文件:max_connections=500 innodb_file_per_table=1 local-infile=0 slow_query_log key_buffer_size=2G query_cache_limit=4M query_cache_size=32M join_buffer_size=2M tmp_table_size=256M max_heap_table_size=256M thread_cache_size=4 table_cache=256 innodb_buffer_pool_size=512M
需要提到的一件重要的事情是,有時在我仍然有大量可用物理 RAM 的情況下使用交換,我認為這不應該發生。
出於某種原因,我認為伺服器有時會受到一些 DoS 攻擊,我不知道這是否相關,但我知道這是因為有時當我執行 netstat 時,我看到一些具有 250 個打開連接的 IP(這些不是搜尋引擎機器人) ,如果我阻止這些 IP,新的 IP 將開始連接,並從一個 IP 再次打開 100-200 個連接。
抱歉,如果我把它弄得比需要的長,但我想知道如何解決這個問題,主要是關於大型 MySQL 臨時文件和“穩定”增加的負載。
謝謝。
我建議您將 MySQL 升級到最新版本。
mysql_upgrade –force
替換
slow_query_log
為log-slow-queries=/var/lib/mysql/slow.log
my.cnf然後執行命令
touch /var/lib/mysql/slow.log
chmod 660 /var/lib/mysql/slow.log
chown mysql:mysql /var/lib/mysql/slow.log
innodb_file_per_table=1
也從 my.cnf 中刪除。如果您懷疑自己受到 DDoS 攻擊,可以安裝 CSF Firewall:http: