mysqld 프로세스에서 매우 높은 CPU 스파이크가 발생하고 있습니다 (100 % 이상, 심지어 한 지점에서 300 %까지 보임). 내 부하 평균은 .25, .34, .28입니다.
수행 할 주요 작업 중 하나는 영구 연결을 비활성화하는 것입니다. 그래서 php.ini와 mysql.allow_persistent = on
과 mysql.max_persistent = -1
을 확인했습니다. 이는 제한이 없음을 의미합니다.
이것은 확실하게 변경하기 전에 몇 가지 질문을 제기합니다.
편집하다:
CPU 정보 : Core2Quad q9400 2.6 Ghz
해결 방법
영구 연결은 자체적으로 CPU를 사용하지 않습니다. 연결을 사용하는 것이 없으면 유휴 상태이며 약간의 메모리 만 사용하고 소켓을 차지합니다.
부하 평균은 그저 평균입니다. 1 초에 10 번 0 %에서 100 % 사이를 번갈아 가며 진행하는 프로세스가있는 경우 평균 부하가 0.5가됩니다. 장기간 지속되는 높은 CPU를 알아내는 데는 좋지만 본질적으로 스파이크의 징후를 숨기거나 제거합니다.
mysql과의 지속적인 연결은 일반적으로 필요하지 않습니다. MySQL은 상대적으로 빠른 연결 프로토콜을 가지고 있으며 영구 연결을 사용하여 시간을 절약하는 것은 상당히 적습니다. 단점은 연결이 지속되면 일관성없는 상태로 남을 수 있다는 것입니다. 예 : 연결을 사용하는 앱이 예기치 않게 종료되면 MySQL은이를 인식하지 못하고 정리를 시작합니다. 즉, 앱에 의해 생성 된 서버 측 변수, 잠금, 트랜잭션 등은 앱이 충돌했을 때의 상태로 유지됩니다.
다른 앱에서 연결을 다시 사용하면 싱크대에있는 더러운 접시와 수세되지 않은 화장실에서 시작합니다. 매달린 트랜잭션 / 잠금으로 인해 교착 상태가 매우 쉽게 발생할 수 있습니다. 새 앱은 이에 대해 알지 못하며 이전 앱은 더 이상이를 포기할 수 없습니다.
참조 페이지 https://stackoverflow.com/questions/7110230
'MySql' 카테고리의 다른 글
MySQL SUM (users_count)이 1000에 도달 할 때까지 선택할 SQL 쿼리 (0) | 2020.09.30 |
---|---|
MySQL 저장 함수에서 배열 반환 (0) | 2020.09.30 |
MySQL 쿼리 : 행의 평균 값을 계산하는 방법은 무엇입니까? (0) | 2020.09.30 |
MySQL PHP에서 문자열을 MySQL 타임 스탬프 형식으로 변환 (0) | 2020.09.30 |
MySQL 배열 배열을 반복하는 방법 (0) | 2020.09.30 |
댓글