/var/cron/log 파일에 'c queue max run limit reached'와 같은 메시지가 기록되는 경우가 있다. 보통은 이와 함께 아래와 같이 'rescheduling a cron job' 이라는 메시지가 같이 나온다.
! MAXRUN (100) procs reached 월 9월 7 04:21:00 2009
! c queue max run limit reached 금 9월 11 09:46:00 2009
! rescheduling a cron job 금 9월 11 09:46:00 2009
위 메시지는 cron 작업이 동시에 진행될 수 있는 max값이 100개 인데, 현재 100개 모두 사용되고 있으며, 따라서 queue 에 더이상 새로운 cron 작업이 실행되지 못해서 발생하는 에러이다.
이런 경우, 일반적인 원인은 cron에 등록되어 현재 실행중인 작업 중에서 실행 후 정상적으로 종료되지 못해 프로세스에 그대로 남아 있는 경우 발생한다. 이런 상황을 방치하면, 중요한 cron작업이 수행되지 못해 시스템에 치명적인 장애를 유발할 수 있다.
대응 방법은 다음과 같다.
1. MAX queue 값을 늘려준다.
원본 : http://blog.naver.com/leolo?Redirect=Log&logNo=70038240004
Cron을 이용해서 작업을 많이 하는 경우 가끔 아래의 에러가 생길때 queue max run limit reached 이와 같은 에러가 나는 원인은 cron job이 동시에 100개 이상 되었을때 생기는 수가 있다.
(기본값 : 100 개)
해결 방법은 /etc/cron.d/queuedefs 에 cron의 설정을 추가하면 된다.
c.200j10n120w
( c : cron , 200 : 동시 허락되는 cron 수 , 10은 nice value , 120 : wait value )
참고
# a - sh jobs
# b - batch jobs
# c - cron event
# d - sync event
# e - ksh jobs
# f - csh jobs
하지만, 위의 방법은 실행중인 cron 작업이 비정상적이어서 종료되지 않은 경우라면, 근본적인 해결책이 되지 못한다. 비정상적은 cron작업은 새로 실행될때마다 계속해서 갯수만 잡아먹고 종료되지 않기 때문이다.
따라서, 근본적으로는 문제가 되는 cron 작업을 찾아서 원인을 제거해야 하고, 임시적 해결책으로는 비정상적으로 종료되지 않고 있는 프로세스를 찾아서 강제로 kill 해줘야 한다.
아래와 같은 방법으로 해 준다.
해당 user의 cron 작업을 본다. 여기에선 root 로 실행된 것들을 보여준다.
# ps -ef | grep /usr/sbin/cron | grep root | nawk -F' ' '{print $2}'
위 결과에서 종료되지 않고 많이 남아 있는 EXP_ADPROD 작업이 있음을 확인하고 얼마나 되는지 확인한다.
# ps -ef|grep EXP_ADPROD|awk '{print $2}
확실히 문제있음을 확인했으면 아래와 같이 kill 한다.
# kill -9 `ps -ef|grep EXP_ADPROD|awk '{print $2}'`
'Solaris > 문제해결' 카테고리의 다른 글
솔라리스 su(switch user)가 되지 않을때. (0) | 2010.01.21 |
---|---|
SUN Solaris 10에서 Qlogic 2300 HBA 카드와 SAN Disk 미인식 문제 해결 (0) | 2009.10.10 |
[sendmail] Name server timeout (0) | 2009.08.24 |
솔라리스 FTP 로그인시 한글로 나타나는 현상 (0) | 2009.05.06 |
xmanager 연결이 안되는 경우 해결 (0) | 2009.01.30 |