Backend 서비스중 하나로서, Apache Http 서버를 실행해서 Tomcat과 붙여서 테스트하면 느리다고 한다. Tomcat만 실행하면 1초 내외라 한다. UI 정적 리소스는 전혀 없고, 하나의 ip에서 ui요청하면 여러 리소스를 서비스하는 것이 아니라 1건씩 처리해주는 서버이다. 완벽하지는 않지만, 도움이 될 듯 해서 공유한다. 



<성능>

1. KeepAlive

Apache 설정 보니. KeepAlive 설정은 전혀 보이지 않는다. 


KeepAlive on/off 여부

KeepAliveTimeout 숫자


디폴트는 On 이라, 따라서 서버 소켓 개수 여부는 리눅스의 ulimit 개수까지 file open이 된다. 그리고 KeepAliveTimeout은 5초입니다.  Session이 다르면 해당 소켓을 쓸 수 없다. 

http://httpd.apache.org/docs/current/ko/mod/core.html#keepalive


UI가 많은 포털에서는 KeepAlive가 유용하지만, 해당 서버의 경우 요청이  그렇지 않기 때문에 검토해야 한다. 

그러나 Client쪽에서 KeepAlive로 통신하는 경우를 선호한다면, KeepAlive를 On으로 하는 것이 좋다. 소켓은 열고 닫는 비용이 항상 비싸다..





2. Timeout 

Timeout 설정은 없다. Timeout은 디폴트값은 60초이다. 

즉 특정 클라이언트의 ack / syn 가 오지 많으면 60초를 기다리라는 뜻으로, 5초나 10초로 짧게 해주면 좋을 듯 하다. IDC내부라면 최대 5이다.

http://httpd.apache.org/docs/current/ko/mod/core.html#timeout


Timeout 5


3. ulimit -f 확인

ulimit -f 하셔서 프로세스에서 최대 몇개의 파일을 open할 수 있는지 체크해야 한다. 

보통은 ulimited 또는 최소 34000개 이상의 값을 지정한다.  keepalive로 사용할 경우 이 값이 굉장히 중요해며, 성능의  중요 factor중 하나가 된다. 



4. mpm_worker_module

mpm_worker_module 부분의 MaxClients 설정값과 StartServer를 늘려주는 것이 좋을 듯 싶습니다.  메모리는 조금 늘어나도 성능이 늘어나기 때문이다. 어느정도 성능이 필요한 서버이기 때문에 초기값을 조금 많게 잡고 MaxClients 개수를 높여 성능 이슈가 없게 할 수 있다. 


<IfModule mpm_worker_module>

    StartServers          128

    MaxClients           1024

    MinSpareThreads      25

    MaxSpareThreads      75

    ThreadsPerChild      25

    MaxRequestsPerChild   0

</IfModule>



5. mod_jk timeout

mod_jk에 timeout을 사용하는 것이 좋다.

http://knight76.tistory.com/entry/modjk%EC%9D%98-workersproperties-%EC%84%A4%EB%AA%85




<보안 관점>


1. SSL쪽은 이거 보셔서 알고리즘을 변화시키면 된다. 

 http://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/


SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM

2. Directory

보안을 높이기 위해서는 cgi-bin같은 디렉토리, ui 디렉토리를 보여주지 않도록 설정한다. 




<기타>

Tomcat쪽도 server.xml의 Timeout을 확인한다. 

 

http://tomcat.apache.org/tomcat-7.0-doc/config/http.html


connectionTimeout 같은 류를 꼭 체크한다. 


Posted by '김용환'
,