2017-12-28 68 views
0

문제는 내가 스스로를 반복하는 cronjob을 가지고 있습니다. 2 분 &은 몇 가지 mysql 쿼리를 수행하는 PHP 스크립트를 호출합니다. 이제 그 과정에서 mysql이 너무 바빠서 프로세스가 너무 많은 메모리를 소비하고 있습니다 .. 할당 된 RAM은 2GB입니다. .. 그것은 4 시간 정도 사용되었거나 몇 시간 만에 2GB의 추가 VSwap이 사용 중입니다. 그때 그것은 단지 충돌을 제공합니다. mysqli::real_connect(): (HY000/2002): Connection refusedmysql 연결을 해제 할 수있는 방법이 있습니까?

나는 틀린 것이 틀림 없다. 나는 2 분마다 mysql 쿼리를 호출하는 cron이 나쁜 호출 일지 모른다. 그러나 그렇지 않으면 그것을 관리하는 방법을 모르겠다. 해결책이 필요하다. CentOS 6.6 Server를 사용하고 있습니다.

+2

2 분마다 mysql 쿼리가 문제가되지 않아야합니다. PHP 스크립트를 공유 할 수 있습니까? – JimL

+1

루프에서 연결을 만드는 스크립트가있는 것 같습니다 – BRjava

+0

mysqli_close (연결)를 사용하여 mysql 연결을 닫거나 mysql에서 연결 수를 늘립니다. –

답변

0

빈도를 20 분으로 변경하여 2 분마다 한 번씩 활동하기보다는 실제로 진행되고있는 작업을 확인하는 데 시간을줍니다.

0

잘못된 점은 시스템이 잘못 구성되어 있다는 것입니다. 리눅스 시스템에서, 스왑으로 들어가는 것은 정말 나쁩니다. 페이지 아웃/페이징에 걸리는 시간 때문에 속도가 느려지지는 않을뿐만 아니라 VFS 캐시도 잃어 버립니다. 그리고로드가 올라감에 따라 프로세스는 다음과 같습니다. 선매 형 대신 선매가 가능하다.

는 단순히 오히려 아닌 것 같습니다

을 제공 충돌합니다. OOM 살인자가 프로세스를 수확 할 확률이 높습니다.

시스템을 올바르게 구성하려면 많은 시간과 지식이 필요하지만 우선 mysqltuner.pl을 설치하고 사용 가능한 RAM에 맞게 MySQL 인스턴스를 다시 구성해야합니다. 자체 매 2 분 좋지 않다

을 반복

. 그리고 경쟁 조건으로 이끄는 페이징 문제를 복잡하게합니다. 따라서 우선 순위에 따라 다른 인스턴스 (예 : 잠금 파일 사용)가 활성화되어 있으면 실패하도록 구성해야합니다. 이것은 신속한 수정임을 유의하십시오. 이러한 빈번한 배치 작업이 필요하지 않도록 시스템을 설계해야합니다.