sendmail 튜닝 종합정리
*nix/OSX나야나 2010/02/10 19:40
현재 회사에서 매일 6개의 사이트에서 대략 2-3시간 사이 10만건을 보내는중.
요즘 8시정도에 보내면 새벽 1-2시까지 지연이 발생해 이에대해 메모
이것저것 조사해본결과 현재 세팅으로는 캐퍼가 맥스에 달해 있다고 판단됨.
애플리케이션 튜닝
1. 배신의 평준화
메일을 배신에 있어서 현재 5캐리어(docomo, au, softbank,willcom,PC)를 나눠서 보내고 있으나. 각 캐리어가 10분당 1000건씩 큐를 하도록 php에 세팅 되어있다. 이게 6사이트가 되면
6사이트 * 5캐리어 * 1000 = 30000만건이 되는
2. 에러메일처리
기본적으로 핸드폰사 메일 서버는 에러(존재 안하는 메일)메일을 지속적으로 보내는걸 굉장히 실어한다. 이미 우리쪽 서버에는 삼진아웃처리를 하고있다.
서버튜닝
2.
참고.
queueLA・・・Load Average가 설정값을 넘겼을 경우 발송하지 않고 큐에 넣는다(/var/spool/clientmailq/폴더에)
RefuseLA・・・Load Average가 설정값을 넘겼을 경우 신규접수를 거부한다.
(SENDMAIL자체는 정지없이, 로드 에버리지가 지정치를 밑돌경우 자동적으로 접수를 재개한다.)
ll /var/spool/clientmqueue/ |wc -l
로 확인. (메일 한게당 두파일이 생성된다.)
부작용
설정치가 너무작으면 서버는 여유가 있는데 신규연결을 거부하게 된다.
Load Average는 top, w로 확인가능
「load average」は、run queueに入っているジョブ*の数を表しています。run queueとはCPUに割り当てられたジョブが入れられる待ち行列のことで、CPU数が1つのときに「2」と表示された場合、CPUは2つのジョブを実行しています。この平均値が「load average」であり、左から1分、5分、15分間のrun queueにあるジョブ数となります。
프로세스 확인
# vmstat
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr dd dd f0 s3 in sy cs us sy id
0 0 0 292344 52152 0 2 1 0 0 0 0 1 0 0 0 303 373 139 0 1 99
설정
sendmail.mc 또는sendmail.cf 에 설정을 한다.
설정후, sendmail을 재기동
- 기본치는 QUEUE_LA =8、 RefuseLA=12
- 추천치는 머신에 따라 다르므로 처음엔 기본치로 운용, 사용율을 감시.
- 머신에 여력이 있는데 접속거부수가 다발할 경우, 이 수치를 올릴것을 검토.
[sendmail.mc]
define(`confQUEUE_LA', `12')dnl
define(`confREFUSE_LA', `18')dnl
[sendmail.cf]
# load average at which we just queue messages
O QueueLA=12
# load average at which we refuse connections
O RefuseLA=18
4.로깅
메일 배신중 로깅(bandwidth)이 지나친 것을 느끼고 구글링한 결과,
Edit the Syslog.conf with Vi
vi /etc/syslog.conf
click insert key Add a "#" in front of
kern.=debug -/var/log/bandwidth
Restart the systemlog service
/sbin/service syslog restart
Delete the massive file
rm /var/log/bandwidth
5. 메일 내용이 같을경우 기본적으로 동보송신을 한다.
이때 메일 어드레스 작성시 주의
docomo : 100개까지
kddi:5개에서 2009년경인가 30건으로 증가
softbank:?
요즘 8시정도에 보내면 새벽 1-2시까지 지연이 발생해 이에대해 메모
이것저것 조사해본결과 현재 세팅으로는 캐퍼가 맥스에 달해 있다고 판단됨.
애플리케이션 튜닝
1. 배신의 평준화
메일을 배신에 있어서 현재 5캐리어(docomo, au, softbank,willcom,PC)를 나눠서 보내고 있으나. 각 캐리어가 10분당 1000건씩 큐를 하도록 php에 세팅 되어있다. 이게 6사이트가 되면
6사이트 * 5캐리어 * 1000 = 30000만건이 되는
2. 에러메일처리
기본적으로 핸드폰사 메일 서버는 에러(존재 안하는 메일)메일을 지속적으로 보내는걸 굉장히 실어한다. 이미 우리쪽 서버에는 삼진아웃처리를 하고있다.
서버튜닝
2.
참고.
queueLA・・・Load Average가 설정값을 넘겼을 경우 발송하지 않고 큐에 넣는다(/var/spool/clientmailq/폴더에)
RefuseLA・・・Load Average가 설정값을 넘겼을 경우 신규접수를 거부한다.
(SENDMAIL자체는 정지없이, 로드 에버리지가 지정치를 밑돌경우 자동적으로 접수를 재개한다.)
ll /var/spool/clientmqueue/ |wc -l
로 확인. (메일 한게당 두파일이 생성된다.)
부작용
설정치가 너무작으면 서버는 여유가 있는데 신규연결을 거부하게 된다.
Load Average는 top, w로 확인가능
「load average」は、run queueに入っているジョブ*の数を表しています。run queueとはCPUに割り当てられたジョブが入れられる待ち行列のことで、CPU数が1つのときに「2」と表示された場合、CPUは2つのジョブを実行しています。この平均値が「load average」であり、左から1分、5分、15分間のrun queueにあるジョブ数となります。
프로세스 확인
# vmstat
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr dd dd f0 s3 in sy cs us sy id
0 0 0 292344 52152 0 2 1 0 0 0 0 1 0 0 0 303 373 139 0 1 99
설정
sendmail.mc 또는sendmail.cf 에 설정을 한다.
설정후, sendmail을 재기동
- 기본치는 QUEUE_LA =8、 RefuseLA=12
- 추천치는 머신에 따라 다르므로 처음엔 기본치로 운용, 사용율을 감시.
- 머신에 여력이 있는데 접속거부수가 다발할 경우, 이 수치를 올릴것을 검토.
[sendmail.mc]
define(`confQUEUE_LA', `12')dnl
define(`confREFUSE_LA', `18')dnl
[sendmail.cf]
# load average at which we just queue messages
O QueueLA=12
# load average at which we refuse connections
O RefuseLA=18
4.로깅
메일 배신중 로깅(bandwidth)이 지나친 것을 느끼고 구글링한 결과,
Edit the Syslog.conf with Vi
vi /etc/syslog.conf
click insert key Add a "#" in front of
kern.=debug -/var/log/bandwidth
Restart the systemlog service
/sbin/service syslog restart
Delete the massive file
rm /var/log/bandwidth
5. 메일 내용이 같을경우 기본적으로 동보송신을 한다.
이때 메일 어드레스 작성시 주의
docomo : 100개까지
kddi:5개에서 2009년경인가 30건으로 증가
softbank:?