내 개발 환경에 글래스 피시 4를 실행했습니다자바 글래스 피시 넷 충돌
Windows
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
모든 것이 완벽하게 작동합니다.
지난 주에 내가 데비안 리눅스 서버를 실행에 배포 :
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
응용 프로그램이 일시적으로 충돌 리눅스 환경에서 실행. 충돌없이 며칠 동안 작동 한 다음 몇 시간 내에 여러 번 충돌합니다. 충돌이 발생하면 glassfish 또는 jvm 로그 파일에 오류 메시지가 나타나지 않고 프로세스가 사라지고 한 경우 jvm.log에 잘린 행이 포함됩니다. 모든 오류가 마지막에 주소가 아닌 동일한 것 *
syslog:Jan 14 13:41:19 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007fb6ac076730 ***
syslog.1:Jan 13 19:48:04 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007fb037835c90 ***
user.log:Jan 13 19:48:04 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007fb037835c90 ***
user.log:Jan 14 13:41:19 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007fb6ac076730 ***
user.log.1:Jan 8 10:19:30 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x0000000007974a90 ***
user.log.1:Jan 8 14:29:11 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00000000082431f0 ***
user.log.1:Jan 8 14:57:19 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007f805f87f490 ***
user.log.1:Jan 8 18:23:42 omega-rm java: *** glibc detected *** /usr/lib/jvm/java-7-openjdk-amd64/bin/java: double free or corruption (fasttop): 0x00007eff39829ca0 ***
그렙 자바 : 내가 지금까지 찾은 유일한 단서는 시스템 로그 및 userlog이 포함되어 있다는 것입니다. 모든 시간은 서버가 추락 한 시간과 일치하므로 사라지는 서버의 원인 인 것 같습니다.
해당 응용 프로그램은 여러 형식의 문서를 받아서 MongoDB에 저장하는 문서 저장 시스템입니다. 가능한 경우 이미지를 JPG 형식으로 렌더링합니다.
Apache PDF 상자 및 Java 고급 이미징을 사용하여 JPG 렌더링을 수행합니다. Spring Framework, SpringData MongoDB 및 Spring Security를 실행합니다. 그러나 jtds를 사용하여 가끔 데이터베이스 액세스를하는 경우는 드뭅니다. 충돌이 발생할 때 데이터베이스 활동이 일어나지 않았다고 확신합니다. 최근에 이미지 재 처리가 수행되었지만 대부분의 충돌이 발생했을 때 성공적으로 완료되었지만 (가장 최근의 충돌에 대해 자세히 확인되지 않고 모든 이미지가 최근 저장된 문서에 대해 생성되고 저장되었습니다). 가장 최근의 문서가 업로드 된 후 50 초가 지나서 충돌이 발생했습니다.
사실 온라인에서 찾은 모든 토론은 C 또는 C++ 프로그램에서 발생했으며 거기에는 의미가 있습니다. 내가 자바 프로그램에서 일어날 수있는 유일한 방법은 JNI (내가 사용하지 않고 어쩌면 내가 사용하고있는 라이브러리 중 일부는 JNI를 사용하지만 그렇지 않다면 그것을 인식하지 못함) 또는 JVM 버그
이 문제의 원인을 좁히려는 사람이 있습니까?
자세한 내용을 보려면 로깅 또는 진단 기능이 있습니까?
현재 내가 생각할 수있는 유일한 사실은 특정 기능을 해제 한 상태에서 애플리케이션을 잠시 실행하려고하는 것입니다 (현재 PDF 상자를 사용하여 PDF 렌더링을 가장 의심스럽게 생각하는 순간) 어떤 기능 조합이 안정적이고 그렇지 않다. 가능하다면 더 확실한 접근법을 택할 것입니다. (그리고 테스트가 효과가 있는지보기 위해 며칠을 기다리지 않아도됩니다!).
제안과 추측 만하지만 내게는 JVM이 문제를 일으키는 것처럼 보입니다. 또한 openjdk를 사용하고 있음을 확인합니다.필자는 항상 오픈 자바를 오라클의 '공식'바이너리로 대체했으며 우분투에서는 그렇게하기가 특히 어렵지 않습니다 (데비안에서도 쉽게 사용 가능할 수 있습니다). Open Java는 Java 표준과 호환되지 않지만 저를 인용하지 마십시오. Oracle Java를 설치할 수 있습니까? – Kerry
고마워, 나는 나 자신에 대해 궁금해했다. 이론적으로 나는 어떤 자바 버전이라도 설치할 수 있도록 컴퓨터에 대한 완전한 접근 권한을 가지고있다. 실제로 나는 내가 설치 한 것을 얻는 것이 완전한 악몽이라는 것을 알았습니다. 나는 또한 인터넷 검색을했고 OpenJDK는 오라클이 사용하는 것과 동일한 HotSpot JVM을 사용하는 것처럼 보였다. –
Tim, 우분투는 다음과 같은 꽤 좋은 안내서입니다 : https://help.ubuntu.com/community/Java 'update-alternatives'를 사용하고 있습니다. 제 생각에는'update-alternatives'는 데비안베이스에서 나온 것이므로 여러분에게 제공 될 것입니다. – Kerry