2016-06-06 5 views
0

AWS에서 호스팅되는 Linux 서버를 사용하고 있으며 사용 가능한 RAM의 양이 적어 웹 사이트가 다운되고 "데이터베이스 연결 오류"라는 오류가 발생합니다.웹 사이트가 다운 될 때마다 MySQL을 다시 시작하기위한 스크립트를 작성할 수 있습니까?

이럴 때마다 MySQL을 다시 시작해야합니다.

이 과정을 자동화 할 수 있습니까?

나는 lampp를 서버를 다시 시작하기 위해 사용하는 명령은 다음과 같습니다

sudo /opt/lampp/lampp restart 
+1

당신은 서버가있는 경우 모든 X 분을 확인하는 스크립트가 필요합니다, 당신은 항상 간격 (검사 사이의 시간)의 비트와 함께 결국 줘야 해. 프로세스가 아직 실행 중이며 연결할 수 없습니다. 10 초마다 확인하는 것은 좋은 계획처럼 보이지 않습니다 (전혀). 당신은 또한 다른 문제들을 위험에 빠트 렸습니다, 나는 더 많은 기억을 선택할 것입니다. 스크립팅으로 해결하지 마십시오 ... 더 큰 인스턴스로 이동하십시오. – Roger

답변

1

그냥 어떻게 작동하는지 데모를하는 것이 아래로

경우를 MySQL의 포트를 모니터하고 다시 시작 떠들썩한 파티 스크립트를 사용

nc 명령은 포트 3306 (mysql 포트)이 연결 가능한지 확인합니다. 그러면 $? 0으로 설정되어 있으므로이 값은 "up"으로 계산됩니다. 그렇지 않으면 $? 내려왔다. 당신은 아무것도하지 않고 MySQL의 명령

while [ 1 ] 
    do sleep 1 
    nc -z localhost 3306 
    if [ $? == 0 ]; then echo "up" 
    else echo "down" 
    fi 
done 

에게이

while [ 1 ] 
    do sleep 10 
    nc -vz localhost 3306 
    if [ $? != 0 ]; then /opt/lampp/lampp restart 
    fi 
done 

처럼 보일 수있다 사용할 수있는 실제 버전을 실행하려고하는 예를 echo "select 1;" | mysql를 들어, 대신 "NC"다른 명령을 사용하실 수 있습니다 이

01처럼 크론에서 실행 한 후 괜찮을 것 1 분의 시간 간격을 증가시킬 수있는 경우이 연중 무휴

을 (어쩌면 너무 "화면"명령을 사용하여) 열린 창을 떠나 실행할 수 있습니다 crontab을에서 23,516,

#!/bin/bash 
    nc -vz localhost 3306 > /dev/null 2>&1 
    if [ $? != 0 ]; then /opt/lampp/lampp restart 
    fi 
0

AWS EC2는 안압이 파열 제공

* * * * * /path/to/script 

스크립트 (분마다 실행), 그래서 나는 큰 SWAP/캐시 내 리눅스 서버를 구성합니다. 필자는 MySQL이 InnoDB의 모든 것을 기억하고 싶어한다는 InnoDB 개념에 반하는 것이라고 이해합니다. 또한 LAMP를 사용한다고 가정 할 때 PHP의 메모리 사용을 확장해야합니다.

http://charmingwebdesign.com/how-to-add-swap-partition-on-ec2-linux-instance/

http://charmingwebdesign.com/wordpress-support-plugin-woocommerce-excelling-ecommerce-what-is-ideal-php-memory-for-woocommerce/

관련 문제