저는 서버 테스트를 하고 있었는데 모든 메모리를 사용하려고 하여 의도적으로 가상 Solaris 서버를 충돌시켰습니다. 서버의 ulimit는 15GB(총 시스템/스왑 메모리 수백 GB)입니다. 쉘/Perl 스크립트를 사용하여 이를 직접 수행할 수 있는 방법이 있습니까? (이것은 강화된/보안 환경이므로 액세스 가능한 유일한 도구는 Perl[및 물론 셸]입니다).
배경: 실제 테스트는 기본 프로세스를 다른 서버로 장애 조치하는 것이었습니다. 최근에 여러 프로세스가 "통제 불능" 상태가 되어 모든 시스템 리소스를 소비하여 서버가 충돌하게 되었습니다(별도의 문제). 저는 이 상황에 대한 대응을 테스트하기 위해 간단하고 반복 가능한 시나리오를 만들려고 합니다.
답변1
jlliagre가 이 질문에 대답했습니다. 좋은 답변에 대한 링크를 게시했습니다. 내가 아니라 그분을 믿으십시오.
/tmp에 쓰는 경우 Solaris에서만 디스크가 아닌 RAM에 쓰는 것입니다. 이것이 /tmp 파일 작성이 매우 빠른 이유입니다. RAM이 가득 차면 시스템이 느려집니다. /tmp가 완전히 가득 차면 /tmp에 대한 writews가 스왑 영역에 쓰기를 시도하여 결국 시스템이 충돌하게 됩니다. 이 방법은 메모리 제한을 우회합니다. 최대 파일 크기를 지정하지 않았는지 확인하세요.
ulimit -a
file(blocks) unlimited