저는 Solaris 10 시스템에서 응용 프로그램을 실행하고 있습니다.
어제 우리는 프로세스 스택 크기를 무제한으로 설정했습니다.
ulimit -s unlimited
현재 로드하는 동안 프로세스는 Oracle 데이터베이스에서 로드하는 동안 "메모리 부족"을 보고하지 않으며 스택 크기가 다시 8192K로 제한되면 프로세스에 문제가 없습니다.
Stack Overflow에 이에 대한 질문이 있습니다."무한 스택" 크기로 애플리케이션을 실행하면 어떤 영향이 있나요?
그러나 우리는 예상할 수 있는 이상하고 일반적으로 다양한 메모리 관련 문제를 보지 못했습니다.
따라서 두 가지 질문이 있습니다.
- 스택을 무제한으로 설정하면 현재 사용자당 설정된 ulimit보다 낮을 수 있는 일부 시스템 제한으로 되돌아가는 데 특별한 의미가 있습니까?
- 루트 액세스 없이 이러한 제한 사항을 어디에서 찾을 수 있습니까?
편집하다
`isainfo -v
64비트 sparcv9 애플리케이션 vis2 vis
32비트 sparc 애플리케이션 vis2 vis v8plus div32 mul32`
답변1
제안 사항에 대한 pmap 출력을 살펴보면 올바른 방향으로 안내할 것입니다. 고려해야 할 한 가지는 메모리 조각화입니다. 데이터베이스 인스턴스(및 이에 의존하는 애플리케이션)를 중지하고 시작하면 애플리케이션(rdbms 엔진)은 가능한 한 많은 연속 메모리를 요청하기 위해 여러 시스템 호출을 수행합니다. 시스템에 메모리 조각화가 있으면 많은 양의 메모리가 필요한 응용 프로그램을 시작하는 데 어려움이 있으며 이 상황에서 ENOMEM(메모리 부족)이 보고될 수 있습니다.
DTrace를 사용하여 직접 관찰할 수 있습니다.
Solaris 11, SRU 및 업데이트에는 이에 대한 몇 가지 수정 사항이 있지만 Solaris 10에 적용되는지는 확실하지 않습니다. MOS에 로그인하여 rdbms 페이지에서 Solaris 10 관련 문제를 확인해야 합니다.