문제 현상:
Tomcat(8.5.13)이 SuperMap iServer를 배포했으며 동시 사용자 수가 100명 정도입니다. 시스템이 한동안 실행된 후 서비스가 중단됩니다. 예외 프롬프트
문제 분석:
1. 로그에서 프롬프트 정보를 확인한 후 시스템 메모리 부족으로 인한 것이라고 생각했습니다. 그래서 시스템 메모리와 Tomcat 메모리를 1초마다 기록하기 위해 모니터링 스크립트를 서버에 추가했습니다(아래 참조).
일정시간 모니터링한 결과 또 예외가 나타났습니다. 로그에서 메모리 예외가 발견되지 않았습니다
2. 메모리를 제외시킨 후, 동시 사용자가 너무 많아 프로세스 수를 초과한 것은 아닌지 생각이 바뀌었습니다.
1) 현재 Linux 사용자 ulimit -a
의 리소스 제한 매개변수 보기 2) 위 매개변수 중에서 더 관심을 끄는 것은 프로세스에서 열 수 있는 최대 파일 수입니다. 즉, 파일을 엽니다. 시스템에서 생성할 수 있는 최대 프로세스 수는 max user process 매개변수입니다. ulimit -u 4096을 사용하여 최대 사용자 프로세스 값을 수정할 수 있지만 다시 로그인한 후에도 시스템 기본값이 계속 사용됩니다.
올바른 수정 방법은 /etc/security/limits.d/90-nproc.conf 파일의 값을 수정하는 것입니다. 먼저 이 파일에 무엇이 포함되어 있는지 살펴보겠습니다.
$ cat /etc/security/limits.d/90-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096
위 파일에서 값 4096만 수정하면 됩니다.
조사 결과, 실제로 서버의 현재 사용자가 설정한 최대 프로세스 수가 너무 적어서 서버에서 프로세스 생성에 실패하고 충돌이 발생한 것이 원인이었습니다.
참조:
linux 현재 프로세스 보기:
위 내용은 Linux에서의 Tomcat 오류 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!