mysql은 매일 같은 시간에 응답하지 않습니다.

mysql은 매일 같은 시간에 응답하지 않습니다.

내 서버는 매일 같은 시간에 다운됩니다. 문제가 mysql 때문인 것으로 나타났습니다.

나는 show processlist를 시도했습니다. 데이터베이스가 절전 모드로 진입하고 있음을 발견했습니다. 아래와 같이 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는 일종의 리소스 돼지입니다.

어쨌든 제가 기억하는 바로는 사이트(PHP)뿐만 아니라 MySQL과 같은 백그라운드 프로세스도 최적화하는 Magento용 플러그인이 있습니다.

매일 같은 시간에 이런 일이 발생하면 Magento가 쿼리를 실행하는 것이지 MySQL 문제가 아니기 때문에 이렇게 말하는 것입니다.

개인적으로 나는

ㅏ:

1: VM에 처음부터 Magento 설치

2: 해당 MySQL 서버에 새 데이터베이스 만들기

3: 그런 일이 일어나는지 확인하세요

또는 B:

1: 해당 Magento 설치를 VM에 복제합니다.

2: VM에서 새로운 MySQL 서버 만들기

3: 그런 일이 일어나는지 확인하세요

MySQL 자체는 재고에서 이런 종류의 최적화를 수행하지 않기 때문에 B가 될 것이라고 생각합니다. 이 방법으로 문제가 해결되지 않을 수도 있지만 MySQL 문제(가능성 없음) 또는 Magento 문제(가능성 높음)인 경우 문제를 격리합니다.

둘 다 아니라면 Apache가 범인일 수 있지만 동시에 발생하는 경우는 거의 없습니다.

관련 정보