2014년 7월 8일 화요일

httpd(아파치)최적화. MaxClient 값 구하기

httpd(아파치) 튜닝에서 가정 중요한 부분은

MaxClient 값과 KeepAlive 라고 본다.
그중 KeepAlive 는 정적 파일을 경우 Off, 동적 파일을 일 경우 On 이 좋다고 한다.

웬만한 httpd 서버는 php 와 연동하여 사용하기 때문에 On으로 설정하는 게 좋을 것 같다.
문제는 MaxClient 값을 어떻게 구할 것인가이다.

MaxClient 값 구하기 스크립트
#/bin/sh

TotalMem=`free -m | grep Mem: | awk {'print $2'}`
TotalMem80per=$(echo "$TotalMem*0.8"|bc)
#pa aux 의 6번째 값이 RSS 인데, 이 값을 가져옴.
TotalHttpMem=`ps aux | grep httpd | grep -v grep | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'`
httpCount=`ps aux | grep httpd | grep -v grep | wc -l`
averageHttpMem=$(echo "$TotalHttpMem / $httpCount" | bc)
MaxClient=$(echo "$TotalMem80per / $averageHttpMem" | bc)

echo "총 메모리 : " $TotalMem
echo "총 메모리의 80% : " $TotalMem80per
echo "http use mem total : "$TotalHttpMem
echo "http process count : "$httpCount
echo "http use mem average : "$averageHttpMem

echo "MaxClients   " $MaxClient

내가 세운 공식은 다음과 같다.
총메모리의 80% / httpd의 평균 메모리 사용량

서버 자체가 웹서버 전용이라면 메모리의 80%는 빼도 상관 없을 듯 하다.

참고 사이트

http://openlife.tistory.com/340
http://jjosh.tistory.com/15
https://kldp.org/node/28074
http://helloworld.naver.com/helloworld/132178

RES의 의미
RES  : 물리적인 메모리를 사용하는 크기
VIRT  : SWAP 영역에서 사용하는 메모리 + shared + swapped를 합친것

http://www.tuning-java.com/454



----

기타 찾아본 최적화 스크립트

https://github.com/gusmaskowitz/apachetuner

https://github.com/gusmaskowitz/apachebuddy.pl

http://surniaulula.com/2012/11/09/check-apache-httpd-mpm-config-limits/

bash 스크립트 사용시 주의 사항

1.if 문을 쓸 때는 아래처럼 if 다음에 꼭 한칸을 띄워줘야 한다.
if [ $checkTmp = 'y' ]

에러 : syntax error near unexpected token `then'
1. 변수를 지정할때는 = 이전,다음에 빈칸이 있으면 안된다.
TotalMem=`free -m | grep Mem: | awk {'print $2'}`

에러 : command not found

2014년 7월 4일 금요일

smtp 서버 설치 후 현재 세션 눌렀을 때, '해당 인터페이스를 지원하지 않습 니다.' 에러

윈도우 2008 에서 smtp 서버 설치 후 현재 세션을 눌렀을 때,

 

'해당 인터페이스를 지원하지 않습니다.' 라는 에러메시지 가 띄워진다.

 

C:\Windows\System32\inetsrv>regsvr32 smtpsnap.dll
C:\Windows\System32\inetsrv>regsvr32 smtpadm.dll

 

위와 같이 dll 파일을 등록 시켜 준뒤, mmc 창을 다시 올리면 된다.

 

 

 

 

출처

2014년 7월 3일 목요일

비쥬얼svn 전체 백업 및 이전

비쥬얼svn 전체 백업

svnadmin 으로 백업 하고 복구 하는 법으로 하지 않고 그냥 Repositories 폴더만 복사해서
다른 서버로 이전했다.

1 . 새로운 서버에서 visualsvn 설치 후 서비스를 종료,
2. 새로 만들어진 Repositories 삭제.
3. 복사해 온 Repositories를 같은 위치에 붙여넣기
4. 해당 폴더의 권한에 visaulsvn admin,과 network service 를 추가.
5. visualsvn 재 시작.

2014년 7월 2일 수요일

qmail submission 추가

qmail submission 추가

외국에서 메일을 사용시 아웃룩에서 이런 에러 메시지가 발생.

outlook cannot connect to your outgoing smtp email server

검색해 보니, 외국같은 경우 25번 포트를 차단하는 경우가 많다고 한다.

그래서  부득이하게 587 포트를 열게 됬다.
cd /var/qmail/supervise

#submission 용 디렉토리 생성
mkdir qmail-smtpd-sub
mkdir qmail-smtpd-sub/log

#권한 추가
chmod +t qmail-smtpd-sub
cp ./qmail-smtpd/run ./qmail-smtpd-sub/
cp ./qmail-smtpd/log/run ./qmail-smtpd-sub/log
cp /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd-sub

새로만든 qmail-smtpd-sub/run에 25번 포트를 587로 변경해 준다.
vi /var/qmail/supervise/qmail-smtpd-sub/run

...
/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 25 \
...

/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 587 \

 

서비스에 추가
ln -s /var/qmail/supervise/qmail-smtpd-sub/ /service/

이렇게 셋팅 하면 qmail을 재시작 안해도 자동으로 587 포트가 열려있다.
아웃룩에서 smtp 포트를 587 로 변경하고 테스트 해 보면 잘 된다.

참고

2014년 6월 27일 금요일

톰캣 두개 설치

톰캣 두개 설치
1. 일단 톰캣 하나는 그냥 설치.
2. 톰캣을 다운로드 받을 때, 파일 설명
zip (pgp, md5)#실행스크립트만 있다. service.bat 없음. 윈도우, 리눅스 겸용.
tar.gz (pgp, md5) # zip 파일과 동일. 압축형태만 다름
32-bit Windows zip (pgp, md5) #윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. 32bit
64-bit Windows zip (pgp, md5) #윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. 64bit
64-bit Itanium Windows zip (pgp, md5) ##윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. Itanium CPU 사용시
32-bit/64-bit Windows Service Installer (pgp, md5) ##윈도우 컨트롤러 있음. 실행스크립트가 없음.

자세한 사항은 여기 참조.
tomcat/bin 폴더에 catalina.bat에

제일 상단에 아래처럼 추가.
set CATALINA_HOME=D:\WAS\apache-tomcat-7.0.35
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43

startup.bat 이나, shutdown.bat 에는 추가 할 필요 없음.

기타 configtest.bat 등의 툴 실행시 CATALINA_HOME environment variable is not defined correctly 요런 메시지 나오면 추가해서 실행.
문제는 service에 등록 할 때 문제.
두개의 service를 이름을 다르게 해서 등록하면 한개의 서비스만 실행하면
두개의 톰캣이 모두 살아 남.

내가 원하는 것은 톰캣 한개를 죽이면 한개의 서비스만 죽는 건데, 그게 안됨.

해서 한개는 서비스로 사용해도 되지만, 두개는 안됨. 두개째는 startup.bat 파일로 실행 해 줘야 됨.