이 글은 그 동안 내가 일하면서 경험한 것을 토대로 쓰는 거야. 


그러니까 여기에 없는 다른 여러 가지 이유가 있을 수도 있어.



내가 일을 여러 가지 하지만 그 중엔 Java로 도는 것들도 있어.


지금까지 죽은 경우를 여러 번 봤고, 원인을 조사하기 위해 Heapdump 분석도 해보고, Profiling 도 해보고 하는데,


결론은, 보통 네 가지 중 하나였어.



1. 신입이나 땔감이 아무 생각없이 메모리를 왕창 먹게 코드를 짰어.


매우 현실적이면서 가장 자주 발생하는 유형이야.


전공자라도 실무 경험이 없는 신입은 이런 걸 종종 만들지.



2. 갑자기 처리해야 할 데이터가 예상 수준을 몇 배 초과하여 늘어나는 경우가 있어.


이런 이벤트는 2 ~ 3년에 한 번 정도 발생하는 것 같아.


IMF 직전에 카드사 서버들 사용량 폭증해서 미쳐 날뛸려고 했다고 하는 얘기도 있잖아.



3. WAS 또는 사용하는 Framework의 버그


이것도 생각보다는 자주 나와. 2 ~ 3 년에 한두 번 정도 있는 것 같아.



4. 애초에 하드웨어 사양 잡을 때 CPU, 메모리가 턱없이 낮게 잡히는 경우가 있어.


플젝 입찰에서 가격 낮추려고 영업이 이런 데 까지 장난을 한 걸로 보여.


어쩌겠어. 서버에 램 CPU 더 꼽아야지.