ulimit 무한 스택이 이상하게 동작합니다.

ulimit 무한 스택이 이상하게 동작합니다.

저는 Solaris 10 시스템에서 응용 프로그램을 실행하고 있습니다.

어제 우리는 프로세스 스택 크기를 무제한으로 설정했습니다.

ulimit -s unlimited

현재 로드하는 동안 프로세스는 Oracle 데이터베이스에서 로드하는 동안 "메모리 부족"을 보고하지 않으며 스택 크기가 다시 8192K로 제한되면 프로세스에 문제가 없습니다.

Stack Overflow에 이에 ​​대한 질문이 있습니다."무한 스택" 크기로 애플리케이션을 실행하면 어떤 영향이 있나요?

그러나 우리는 예상할 수 있는 이상하고 일반적으로 다양한 메모리 관련 문제를 보지 못했습니다.

따라서 두 가지 질문이 있습니다.

  1. 스택을 무제한으로 설정하면 현재 사용자당 설정된 ulimit보다 낮을 수 있는 일부 시스템 제한으로 되돌아가는 데 특별한 의미가 있습니까?
  2. 루트 액세스 없이 이러한 제한 사항을 어디에서 찾을 수 있습니까?

편집하다

`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 관련 문제를 확인해야 합니다.

관련 정보