5월 15, 2019 10:34:56 오전 org.apache.coyote.http11.AbstractHttp11Processor process
정보: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
서버에 해당 값 오류가 발생하기 시작했습니다.
헤더 정보를 파싱하다 발생한 오류입니다. 파싱을 실패하는 이유는 여러가지 존재하지만, 현재 시스템이 cookie를 많이 사용하는 기반이기 때문에, cookie 설정을 확인했습니다.
tomcat 의 server.xml 을 보면,
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
maxHttpHeaderSize="8192"
maxThreads="150"
minSpareThreads="25"
enableLookups="false"
acceptCount="100"
disableUploadTimeout="true"
maxPostSize="0"
URIEncoding="UTF-8"/>
에서 확인할 수 있습니다. (local의 connector를 예제로 적었습니다. ) 여기서, maxHttpHeaderSize 를 수정하면 되는데, 예전에 해당 값을 늘렸었습니다.
그래서 원인을 못찾고 있다가, 실제 메시지 요청에서도 400 bad request 가 발생하는 현상을 확인하게 되었습니다.
175.213.173.54 - - [17/May/2019:07:59:47 +0900] "GET /rtb/xxx HTTP/1.1" 400 - "https://googleads.g.doubleclick.netxxx" "Mozilla/5.0 (Linux; Android 9; SM-G965N Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.128 Whale/1.0.0.0 Crosswalk/23.69.590.22 Mobile Safari/537.36 NAVER(inapp; search; 592; 10.3.2)" 0ms "IP_info: 175.213.173.54.58834 , fp: - ,Start_Time: 2018081901"
400 bad request 발생 조건 중에 하나가 cookie 의 예정된 길이를 초과했을 경우에 발생하는 것을 확인할 수 있었습니다. 그래서 다시 확인해보니,
http (80) 은 수정이 되어있었는데 https(443) 은 인증키를 바꾸는 과정에서 누군가, 해당 maxHttpHeaderSize 를 지운 것으로 확인되어, 해당값을 늘리면서 해결할 수 있었습니다.
<Connector port="443" keystoreFile="keystore_path"
keystorePass="password" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="4000" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" connectionTimeout="8000" maxHttpHeaderSize="40960" />
maxHttpHeaderSize=”40960” 로 설정하여, 문제를 해결했습니다.