我的伺服器每天都會在同一時間宕機。我發現問題出在mysql。
我嘗試顯示進程列表;發現資料庫正在進入睡眠模式。我看到 log_url 表中有很多插入,如下所示
mysql> show processlist;
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 72962 | sonicsense_db | localhost | sonicsense_db | Query | 1 | Sending data | SELECT `log_url`.* FROM `log_url` LIMIT 2381 OFFSET 2992917 |
| 74069 | sonicsense_db | localhost | sonicsense_db | Query | 4 | Updating | UPDATE `cron_schedule` SET `job_code` = 'captcha_delete_expired_images', `status` = 'error', `messag |
| 74073 | sonicsense_db | localhost | sonicsense_db | Query | 51 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528425', '4646727', '2013-08- |
| 74074 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 52 | | NULL |
| 74077 | sonicsense_db | localhost | sonicsense_db | Query | 41 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528426', '4646728', '2013-08- |
| 74078 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 42 | | NULL |
| 74079 | sonicsense_db | localhost | sonicsense_db | Query | 36 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528427', '4646729', '2013-08- |
| 74080 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 37 | | NULL |
| 74081 | sonicsense_db | localhost | sonicsense_db | Query | 34 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528428', '4646730', '2013-08- |
| 74082 | sonicsense_db | localhost | sonicsense_db | Query | 31 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528429', '4646731', '2013-08- |
| 74084 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 32 | | NULL |
| 74085 | sonicsense_db | localhost | sonicsense_db | Query | 30 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528430', '4646732', '2013-08- |
| 74086 | sonicsense_db | localhost | sonicsense_db | Query | 31 | Updating | UPDATE `catalogsearch_query` SET `query_text` = 'PreSonus', `num_results` = '154', `popularity` = '3 |
| 74087 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 31 | | NULL |
| 74088 | sonicsense_db | localhost | sonicsense_db | Query | 20 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528431', '4646734', '2013-08- |
| 74089 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 20 | | NULL |
| 74090 | sonicsense_db | localhost | sonicsense_db | Query | 12 | update | INSERT IGNORE INTO core_cache_tag (tag, cache_id) VALUES ('MAGE_cache_DEFAULT', 'MAGE_cache_LAYOUT_1 |
| 74091 | sonicsense_db | localhost | sonicsense_db | Query | 10 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528432', '4646736', '2013-08- |
| 74092 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 11 | | NULL |
| 74093 | sonicsense_db | localhost | sonicsense_db | Query | 9 | update | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528433', '4646737', '2013-08- |
| 74094 | sonicsense_db | localhost | sonicsense_wp_db | Sleep | 10 | | NULL |
| 74095 | sonicsense_db | localhost | NULL | Query | 0 | NULL | show processlist |
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
重啟mysql解決了我的問題。我如何檢測導致如此多插入的原因以及為什麼我的資料庫進入睡眠模式。
我還嘗試查看mysql日誌,發現以下錯誤1)最後一個檢查點的年齡是9433987,InnoDB:超出了日誌組容量9433498。
2) 無法使用/var/log/mysql/mysql.log 進行日誌記錄(錯誤2)。關閉整個日誌記錄
我今天再次嘗試,發現以下資料庫處於睡眠模式
63211 sonicsense_db localhost sonicsense_wp_db Sleep 49 NULL
63215 sonicsense_db localhost sonicsense_wp_db Sleep 37 NULL
63217 sonicsense_db localhost sonicsense_wp_db Sleep 37 NULL
63219 sonicsense_db localhost sonicsense_wp_db Sleep 36 NULL
63221 sonicsense_db localhost sonicsense_wp_db Sleep 16 NULL
有誰知道如何解決由於 mysql 導致的網站崩潰問題。
我啟用了慢查詢日誌,我得到了以下詳細信息
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
仍然找不到mysql每天同一時間無回應的任何原因
答案1
編輯/etc/mysql/my.cnf
配置並新增:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
第一行啟用慢查詢日誌(記得旋轉它),第二行是關於查詢必須至少需要多少秒才能被視為慢查詢。
啟用此功能後,您可以開始調查哪些查詢明顯減慢了 MySQL 實例的速度。
答案2
Magento 是一種資源消耗者。
無論如何,據我所知,Magento 有一些插件不僅可以優化網站(PHP),還可以優化後台進程,例如 MySQL。
我這麼說是因為如果它每天都在同一時間發生,那麼它就是 Magento 啟動查詢,它不是 MySQL 問題。
就我個人而言,我要么
A:
1:在虛擬機器上從頭開始安裝 Magento
2:在MySQL伺服器上建立一個新資料庫
3:看看是否會發生
或乙:
1:將 Magento 安裝克隆到 VM
2:在虛擬機器中新建MySQL伺服器
3:看看是否會發生
我有一種感覺,它會是 B,因為 MySQL 本身並沒有從庫存中進行任何此類最佳化。雖然這可能無法解決您的問題,但如果它是 MySQL 問題(不太可能)或 Magento 問題(最有可能),它會隔離它
如果兩者都不是,Apache 可能是罪魁禍首,但這種情況很少見,因為它同時發生。