저는 2주 동안 Win 2K3 R2에서 Atlassian Fisheye/Crucible을 서비스로 설정하려고 노력해 왔습니다. 다양한 "java.lang.OutOfMemoryError: PermGen space" 오류가 계속 발생하여 Fisheye가 충돌하고 서비스를 다시 시작해야 합니다.
나는 ~을 따랐다예서비스 래퍼 내에서 MaxPermSize를 구성하려면 Atlassian 지원 사이트를 방문하세요. 그런데 Fisheye 관리 페이지와 디버그 로그에서 SysInfo를 확인해봐도 아무런 확인 내용이 보이지 않습니다. Java 힙 정보는 두 위치 모두에 있으므로 MaxPermSize 설정이 두 위치 모두에 표시될 것으로 예상합니다.
오류가 지속되고 Atlassian 지원이 거의 도움이 되지 않았습니다.
도움을 주셔서 감사합니다.
답변1
Wrapper.conf 파일에서 이를 설정할 수 있습니다. 제 구성 파일은 다음과 같습니다. 제게는 아주 잘 작동합니다. 저는 Windows Server 2008 R2에서 실행되는 Fisheye 2.6.3과 함께 이 파일을 사용하고 있습니다. 이 파일은 샘플/기본 구성과 대부분 동일하며 마지막에 설명할 몇 가지 중요한 추가 사항이 있습니다.
#************************************************ ******************* # 래퍼 속성 #************************************************ ******************* # 작업 디렉토리 Wrapper.working.dir=../../ # 자바 애플리케이션 Wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe # 자바 메인 클래스. 이 클래스는 WrapperListener 인터페이스를 구현해야 합니다. # 또는 WrapperManager 클래스가 초기화되도록 보장합니다. 돕는 사람 #개의 수업이 이를 수행하기 위해 제공됩니다. 통합 섹션을 참조하세요. 자세한 내용은 문서 #입니다. Wrapper.java.mainclass=com.cenqua.fisheye.FisheyeServiceWrapper # Java 클래스 경로(wrapper.jar 포함) 클래스 경로 요소를 다음과 같이 추가합니다. # 1부터 시작해야 함(log4j 구성이 먼저 로드되도록 lib FIRST를 추가) Wrapper.java.classpath.1=./fisheyeboot.jar Wrapper.java.classpath.2=래퍼/lib/*.jar # Java 라이브러리 경로(Wrapper.DLL 또는 libwrapper.so의 위치) Wrapper.java.library.path.1=래퍼/lib Wrapper.java.library.path.2=lib/native/linux-i386 Wrapper.java.library.path.3=lib/native/osx-ppc Wrapper.java.library.path.4=lib/native/solaris-sparc Wrapper.java.library.path.5=lib/native/win32-x86 # 자바 추가 매개변수 Wrapper.java.additional.1=-서버 Wrapper.java.additional.2=-showversion Wrapper.java.additional.3=-Djava.awt.headless=true # JDK 1.5 jmx용 추가 매개변수 Wrapper.java.additional.4=-Dcom.sun.management.jmxremote Wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=4242 Wrapper.java.additional.6=-Dcom.sun.management.jmxremote.authenticate=false Wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false Wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false Wrapper.java.additional.9=-Dcom.sun.management.jmxremote.password.file=./wrapper/jmxremote.password Wrapper.java.additional.10=-Dwrapper.mbean.name="wrapper:type=Java 서비스 래퍼 제어" Wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin\.." Wrapper.java.additional.12=-XX:MaxPermSize=256m Wrapper.java.additional.13=-Xrs Wrapper.java.additional.14=-Dfile.encoding=UTF-8 # 초기 Java 힙 크기(MB) Wrapper.java.initmemory=64 # 최대 Java 힙 크기(MB) 래퍼.java.maxmemory=1024 # 애플리케이션 매개변수. 1부터 시작하여 필요에 따라 매개변수를 추가하세요. # 첫 번째 응용 프로그램 매개변수는 메인 클래스의 이름입니다. # 메소드는 애플리케이션이 시작될 때 호출됩니다. 클래스 # 이름 뒤에는 기본으로 전달될 매개변수 수가 옵니다. # 방법. 그런 다음 실제 매개변수가 옵니다. Wrapper.app.parameter.1=com.cenqua.fisheye.FishEyeCtl 래퍼.app.parameter.2=1 Wrapper.app.parameter.3=시작 # 시작 매개변수 다음에는 메인 클래스의 이름이 옵니다. # 애플리케이션을 중지하기 위해 메소드가 호출됩니다. 중지 클래스 이름 # 다음에는 래퍼가 다음을 수행해야 하는지 여부를 제어하는 플래그가 옵니다. # JVM을 종료하기 전에 데몬이 아닌 모든 스레드가 완료될 때까지 기다립니다. # 플래그 다음에는 전달될 매개변수의 개수가 옵니다. # 클래스의 메인 메소드를 중지합니다. 마지막으로 실제 매개변수가 나옵니다. Wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl Wrapper.app.parameter.5=true 래퍼.app.parameter.6=1 Wrapper.app.parameter.7=중지 #************************************************ ******************* # 래퍼 로깅 속성 #************************************************ ******************* # 콘솔 출력 형식. (형식은 문서 참조) Wrapper.console.format=M # 콘솔 출력을 위한 로그 레벨. (로그 수준은 문서 참조) Wrapper.console.loglevel=정보 # 래퍼 출력 로깅에 사용할 로그 파일입니다. 래퍼.로그파일=var/log/wrapper.log # 로그 파일의 출력 형식입니다. (형식은 문서 참조) Wrapper.logfile.format=LPTM # 로그 파일 출력을 위한 로그 수준입니다. (로그 수준은 문서 참조) 래퍼.logfile.loglevel=정보 # 로그 파일이 이전까지 증가할 수 있는 최대 크기 # 로그가 롤링됩니다. 크기는 바이트 단위로 지정됩니다. 기본값 # 0, 로그 롤링을 비활성화합니다. 'k'(kb)로 축약할 수 있습니다. # 'm'(mb) 접미사. 예: 10m = 10MB. 래퍼.logfile.maxsize=50m # 이전에 허용될 최대 롤링 로그 파일 수 #개의 파일이 삭제되었습니다. 기본값 0은 제한이 없음을 의미합니다. 래퍼.logfile.maxfiles=10 # sys/event 로그 출력을 위한 로그 수준. (로그 수준은 문서 참조) 래퍼.syslog.loglevel=NONE #************************************************ ******************* # 래퍼 Windows 속성 #************************************************ ******************* # 콘솔로 실행할 때 사용할 제목 Wrapper.console.title=피쉬아이 #************************************************ ******************* # 래퍼 Windows NT/2000/XP 서비스 속성 #************************************************ ******************* # 경고 - 애플리케이션이 실행될 때 이러한 속성을 수정하지 마십시오. # 이 구성 파일을 사용하여 서비스로 설치되었습니다. # 이 섹션을 수정하기 전에 서비스를 제거하십시오. 그만큼 # 서비스를 다시 설치할 수 있습니다. # 서비스 이름 Wrapper.ntservice.name=피쉬아이 # 서비스의 표시 이름 Wrapper.ntservice.displayname=피쉬아이 # 서비스 설명 Wrapper.ntservice.description=피쉬아이 # 서비스 종속성. 1부터 필요에 따라 종속성을 추가합니다. 래퍼.ntservice.dependent.1= # 서비스가 설치되는 모드입니다. AUTO_START 또는 DEMAND_START 래퍼.ntservice.starttype=AUTO_START # 서비스가 데스크톱과 상호 작용할 수 있도록 허용합니다. 래퍼.ntservice.interactive=false
주목할만한 대사
Wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe
JDK '핫스팟' 서버 실행 파일의 전체 경로입니다. JRE뿐만 아니라 전체 JDK를 다운로드하십시오.
Wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin.."
Wrapper.java.additional.12=-XX:MaxPermSize=256m
Wrapper.java.additional.13 =-Xrs
Wrapper.java.additional.14=-Dfile.encoding=UTF-8
위의 내용 중 어느 것도 Atlassian 문서에 나와 있지 않으며, 시행착오를 거쳐 시간이 지남에 따라 추가했습니다. FeCru가 서비스 래퍼에서 처음 시작되면 메모리 부족 오류로 인해 중지될 수 있으며 'MaxPermSize' 줄이 이를 수정합니다.
또한 위와 같이 FISHEYE_INST를 지정해야 한다는 사실도 발견했습니다. 경로가 /..
끝에 로 지정되는 이유를 모르겠습니다 . 제가 찾은 예에서는 그랬습니다. 의심의 여지없이 쿠키 리눅스 의식이 있습니다. 다른 줄은 무엇을 위한 것인지 기억이 나지 않지만 어떤 이유로든 추가했고 그 이유를 문서화하지 않았습니다. 그 누구도 완벽하지 않아 ;-)
래퍼.java.initmemory=64 래퍼.java.maxmemory=1024
힙 메모리 할당이 기본값보다 늘어났습니다. 상당히 많은 저장소를 색인화하고 추가 리소스를 감당할 수 있습니다. 기본적으로 더 작은 할당을 사용하지 않아도 됩니다.