Linux/CentOS2019. 10. 8. 23:07

# vi /usr/local/apache/conf/extra/httpd-default.conf

--------------------------------------------------------------------------------------------------------

#
Timeout 60

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
#KeepAlive On
KeepAlive Off

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
#MaxKeepAliveRequests 100
MaxKeepAliveRequests 0

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5

:

--------------------------------------------------------------------------------------------------------

keepalive timeout 설정

1. 개요
   apache 의 keep alive 옵션을 on으로 하면 클라이언트와 apache 간의 tcp 커넥션을 keepalivetimeout 동안 유지하게 된다. keep alive timeout 설정과 관련하여 고려할 사항들을 정리하였음. 

2. 정의
KeepAliveTimeout
Amount of time the server will wait for subsequent requests on a persistent connection

3. 고려사항
  1) 사용자의 요청량 및 사용자수
     - 인터넷망에서 일반 사용자를 대상으로 접속자 수가 많고  요청량이 많은 웹서비스를 제공 경우,
       keep alivetime을 짧게 가져가는 것이 적절하다. (3초~5초)
     - 60초등과 같이 길게 가져갈경우에는 불필요한 tcp 세션을 유지하게 되고 웹서버의 메모리 사용량이 높아지게 되어 피크시간대에 갑자기 서비스가 안되는 등의 현상이 발생할 수 있다.
     - 폐쇄망에서 내부 사용자를 대상으로 접속자수가 적고, 요청량이 적은 웹서비스를 제공하는 경우,
       keepalivetimeout 시간을 30초~60초 길게 잡는 것이 성능상 유리하다.  
  2) 사용자의 요청간의 간격(think time)
     - 사용자가 한번 요청을 보내고, 다음번 요청을 보내는 간격을 think time이라고 한다. 이 think time과 keep alive time은 어느정도의 갭이 있어야 한다.
       실제 사이트에서 클라이언트 로그상으로는 웹서버로 요청을 보냈는데, 웹서버에는 요청 받은 로그가 없으며, 사용자 요청을 처리하지 못하는 문제가 1주 또는 2주간격으로 불규칙적으로 발생을 하는 경우가 있었다.
       원인은 keepalivetimeout 시간이 15초로 되어 있었는데, 사용자가 해당 화면에서 약 15초 정도 생각하고 요청을 보냈기 때문이었다.
       클라이언트 요청 패킷이 보내질때,  웹서버에서는 커넥션을 끊는 Fin 패킷이 보내지면서, 요청패킷이 웹서버로 전달이 되지 않고,  웹서버에 로그도 남지 않았던 것이다. 이후 keepalivetime을 길게 조정하여 문제를 해결하였다. 

[출처] [apache] keepalive timeout 설정에 대해서..|작성자 우보

Posted by iWithJoy