Я запускал производственный сервер tomcat7 в течение нескольких дней, а затем внезапно недоступен через порт http. Как ни странно, фоновые процессы все еще работали как видно по логам.
Итак, я попытался остановить tomcat7, используя invoke-rc.d tomcat7 stop
от моего дебиан хриплый коробка. Но процесс все еще есть, с флагом. Я попытался kill -9 <pid>
и killall -9 java
, но процесс все еще существует - все еще занимает порт, из-за чего я не могу запустить новый tomcat с ошибкой, когда порт уже используется.
Пришлось перезагружаться. И оттуда все нормально.
Но мне любопытно, что может вызвать такую ситуацию? Никаких больших нагрузок нет. Только запущены некоторые фоновые процессы, парсинг. В журналах ничего подозрительного не вижу.
Что мне делать, если это произойдет снова, чтобы добраться до настоящая причина и исправить?
Вот мои настройки коннектора:
<Connector port="8080" address="127.0.0.1"
maxParameterCount="500"
maxPostSize="250000"
scheme="http"
secure="false"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
disableUploadTimeout="false"
connectionUploadTimeout="300000"
maxThreads="500"
processorCache="500"
URIEncoding="UTF-8"
/>
Моя версия кота: 7.0.28-4 + deb7u1
Мои аргументы виртуальной машины:
JAVA_OPTS = "- Djava.awt.headless = true -Dspring.profiles.active =" background, production "-XX: -UseSplitVerifier -javaagent: /var/lib/tomcat7/spring-instrument-3.2.3.RELEASE.jar - сервер -Xms4G -Xmx4G -XX: MaxPermSize = 128m -XX: + DisableExplicitGC -XX: -HeapDumpOnOutOfMemoryError -XX: HeapDumpPath = / var / log / tomcat7 / dump -XX: + UseParNewGC-UseGCMX: + UseParNewGC-UseGCMX: XX: + CMSIncrementalMode -XX: + CMSIncrementalPacing -XX: CMSIncrementalDutyCycleMin = 0 -XX: CMSIncrementalDutyCycle = 10 -XX: MaxTenuringThreshold = 0 -XX: SurvivorRatio = 256 -XX.net: CMSInitiatingOccupancyFraction = 60-
версия jdk: 7u60