mysql sleep 자동 킬 스크립트

음 php 프로그래머의 실수에 따라 DB사용을 하지 않으나 장시간 sleep이 나는 경우가 있다.

뭐 프로그램 짜다보면 그럴수 있을것이다 =3=a

  •  프로그램이 mysql_pconnect 을 사용하거나 (apache keepalive 시간 동안 접속을 대기 탈 것이다.)
  • mysql 접속후 mysql.close()를 안했거나
  • 로그테이블 등의 크기가 커져서 lock 걸리는 시간이 증가하면 다른 접속자 로그를 쓰기 위해 wait 가 걸리기 때문에 mysql 커넥션이 과도하게 증가하기도 함..
  • 서버 사양 대비 동시접속자수가 많거나…

서버 관리자 입장에서는 서버 메모리에 부담을 주고 sleep 프로세스의 과다 접속에 의해 my.cnf에서 설정된

max connctions 값 에 의해 추가 신규 접속이 불가능한 상황을 방지 해야 한다.

그리하여 이러한 스크립트를 만들었습니다 🙂 – (mysql.close()가 제대로 되지 않는 경우를 상정.)

all_user_target 값을 Y로 해두면 모든 계정에 대해 kill을 수행합니다만.

ssh 접속해서 mysql 작업하면서 장시간 가만히 있으면 강제적으로 프로세스 종료 까지 될수 있습니다.

그래서 all_user_target=”N” 으로 하고 문제시 되는 계정만 target_id 에 설정하여 운용하도록 합니다. ‘ㅅ’a

 

PS. pconnect 를 사용하면 일반 connect 으로 사용하도록 유도 하고, log 테이블이 커졋다면 일정부분 날려서 정리를 해야 할꺼고 사양이 부족하다면 사양 업그레이드를 하거나 DB query cache 를 구현 하는 방법으로 해결 해야 할꺼 같다 ‘ ‘a 이 스크립트는 임시 방편일 뿐이다.

 

 

TLS통신을 위한 Public Certificate 발급&갱신

dovecot, sendmail, proftpd, pure-ftpd 를 위한 개인인증서 발급 혹은 갱신용 스크립트 이다.

스크립트 설명 :  sendmail.pem 인증서의 만료일 2주 미만으로 남았거나 인증서가 없으면 생성해준다.

cron 에 등록하여 일주일에 한번 정도씩 돌려주면 개인인증서 갱신 걱정 없이 사용할 수 있겠다.

vi /etc/cron.weekly/public_cert_make.sh 이런 위치에 넣어두면 일주일에 한번씩 돈다 ‘ㅅ’a

chmod 700 /etc/cron.weekly/public_cert_make.sh 해둬야 돈다 . 잊지 말자.

 

아래 설정값은 플레인 로그인을 막는 설정이 아니다.

LOGIN PLAIN, TLS 둘다 활성화 하는 옵션들 이다.

1. dovecot – STARTTLS 설정( /etc/dovecot/conf.d/10-ssl.conf )

평문 패스워드 막는건 /etc/dovecot/conf.d/10-auth.conf  파일의 disable_plaintext_auth 옵션이다.

 

2. sendmail – STARTTLS 설정( /etc/mail/sendmail.mc )

confAUTH_OPTIONS 는 주석 처리 해버린다 ‘ㅅ’a

평문 패스워드 막는건 define(confAUTH_OPTIONS', A p’)dnl 이렇게 주석 제거 하고 하면 된다.

( TLS연결 테스트 :  https://starttls.info  ) 혹은 아래 명령어.

 

 

3. proftpd – FTP over TLS 설정( /etc/proftpd.conf )

평문 패스워드 막는건 TLSRequired 값을 on 으로 하면 된다.

 

4. pure-ftpd – FTP over TLS 설정( /etc/pure-ftpd/pure-ftpd.conf )

평문 패스워드 막는건 TLS 값을 2 으로 하면 된다.

 

서버인코딩 설정( /etc/sysconfig/i18n )

/etc/sysconfig/i18n 에서 서버인코딩을 설정을 한다.

만약 euckr을 선호 한다면 LANG=”ko_KR.eucKR” 을 지정하면 된다.
하지만 왠만하면 UTF8을 쓰도록하자 표준이 변경된지 몇년째인가?

 

TIP1. utf8로 설정하고 재접속을 하면 엔지니어의 친구인 sar 명령어를 쳤을때 시간이 안나온다.

아래의 명령어로 시간표시를 영국형태로 표시하도록 하자 ‘ㅅ’a 그리곤 재접속.

~]# sar
Linux 2.6.32-504.30.3.el6.x86_64 (localhost.localdomain)       08/04/15        _x86_64_        (8 CPU)

00:00:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
00:10:01        all      0.04      0.00      0.03      0.11      0.00     99.82
00:20:01        all      0.03      0.00      0.03      0.08      0.00     99.87
00:30:01        all      0.02      0.00      0.02      0.07      0.00     99.88
00:40:01        all      0.03      0.00      0.03      0.10      0.00     99.84
00:50:01        all      0.03      0.00      0.03      0.14      0.00     99.81
01:00:01        all      0.02      0.00      0.03      0.16      0.00     99.79
01:10:01        all      0.05      0.00      0.02      0.15      0.00     99.78

 

TIP2. UTF-8 설정시 vi 로 열었을때 한글이 깨져 보이는거 해결.

 

TIP3. SecureCRT 에서는 설정을 이렇게 바꾸어 준다 ‘ㅅ’a

20150804_PicPick_175200

 

Tip4. CentOS7의 경우 /etc/sysconfig/i18n 이 삭제가 되었다.

언어셋 변경 방법은 /etc/locale.conf 을 수정하거나 아래와 같은 명령어로 수정한다.

pure-ftpd 설치 및 설정(centos6)

1. pure-ftpd 다운로드 : http://download.pureftpd.org/pub/pure-ftpd/releases/

 

2. 압축 해제, 컴파일 및 selinux 끄기

 

3. /etc/pam.d/ftp 설정

 

4. TLS 통신 활성화를 위한 퍼블릭키 생성.

 

5. /etc/pure-ftpd/pure-ftpd.conf 설정

36번째줄 설정은 서버 인코딩셋에 따라 euckr 으로 지정해야 할수 있다.

echo $LANG 로 서버 인코딩셋을 확인하거나 /etc/stsconfig/i18n 을 확인하거나 수정 후에 맞추어 준다.

 

6. pure-ftpd 명령어 생성

 

7. 데몬 시작 및 chkconfig 등록.

yum을 이용한 proftpd 설치 및 설정 (centos6)

1. yum 설치 및 selinux 끄기.

 

2. /etc/pam.d/proftpd 설정

 

3. TLS 통신 활성화를 위한 퍼블릭키 생성.

 

4. /etc/proftpd.conf 설정.

37번째줄 설정은 서버 인코딩셋에 따라 euckr cp949 으로 지정해야 할수 있다.

echo $LANG 로 서버 인코딩셋을 확인하거나 /etc/stsconfig/i18n 을 확인하거나 수정 후에 맞추어 준다.

설정은 system-auth 를 이용한 인증제 이며 FTP 및 FTP over TLS 을 지원, 최대 접속자수 30명, 한개의 IP에서 5개 동시접속 허용값이다.

umask 는 022 로 필요에 따라(아파치 보안정책) 027 등으로 교체해서 사용한다.

 

5. 데몬 시작 및 chkconfig 등록.