>  기사  >  운영 및 유지보수  >  Linux에서의 Tomcat 오류 분석

Linux에서의 Tomcat 오류 분석

巴扎黑
巴扎黑원래의
2017-07-21 16:48:421736검색

문제 현상:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.