서버를 만들고, 여러 테스트하는 것 중에 영구 접속이 끊어지는 상황을 재현하는 것은 쉽지 않을 수 있다. 디버거를 이용하여 간단히 종료시켜 보는 법을 알아 본다. python으로 돌고 있는 데몬(pid 11688)이 있다고 하고, 데몬의 DB 접속은 영구 접속에 해당하는데, 이 접속을 강제로 종료시키는 것을 가정한다. $ lsof -n -p 11688 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 11688 pynoos cwd DIR 202,3 80 1636949 /misc/django_projects/app/broadcast python 11688 pynoos rtd DIR 202,3 4096 128 / python 11688 pynoos txt..
django로 만든 웹 서버가 메모리 릭이 있는 것 같아서, 임시로 클라이언트 요청 수에 제한을 걸고 새로 실행되도록 설정했다. 임시가 길어져 1년이 돼가는 동안 잊고 있다가 개발자의 자존심을 건드는 설정인지라 다시 봐야했다. 이 글은 메모리 릭을 잡았다는 것이 아니다. 서버들 중 적당히 스왑을 사용하고 있는 녀석을 골라서 들어갔다. gunicorn 들 중에 제일 pid가 큰 것을 골라낸 후, 해당 PID 에 strace 를 걸어서 GET/POST와 URL PATH에 해당하는 것만 출력하도록 awk 파이프 질을 했다. 동시에 "ps -efl" 로 해당 PID만 골라낸 다음 awk로 적당히 메모리 사용량 부분만 출력한다. 대략 512 개의 요청만 하면 사라지는 gunicorn의 PID이므로, 위 두 작업을..
늪, 사람은 뭔가에 빠지기 마련이다. 하다 못해 게으름에 빠지기도 한다. 그 순간조차 그 상태를 유지하고 싶다. 너무 오래 머물면 안될 것을 알면서도 계속 유지하다가 적응하게 된다. 늪을 나오기 위해, 용기란 것이 가끔 필요한 것임에도, 그 생각이 드는 순간조차 그 속에서 뭔가 더 할 수 있을 것 같은 생각이 동시에 든다. 이것은 늪 속에서 주기적으로 엄습하는 목소리와의 결말 없는 전쟁같은 것이다. 늪, 이 점성 고형물이 꿀인지 진흙인지는 상관이 없다. 결국엔 그것외엔 할 수 없는 것이 그 안에서 사는 모습이다. 새로운 것을 추구하자, 죽기 전에 꼭 해야할 일을 시작하자, 돈을 많이 벌어야지 하고 싶은 것만 할 수 없지 않느냐. 이런 고민은 30대에 끝날 줄 알았지만, 지금보니 늙어서 죽는다고 해도 계속..
- Total
- Today
- Yesterday
- 디버깅
- Linux
- 클레로덴드럼
- TCP/IP
- url
- 킹벤자민
- 벤자민
- macosx
- OpenID
- Tattertools plugin
- 오픈소스
- VIM
- perl
- 구근
- MySQL
- SVN
- 대화
- 커피
- tattertools
- 퀴즈
- 수선화
- BlogAPI
- SSO
- ssh
- 덴드롱
- 식물
- JavaScript
- nodejs
- Subversion
- writely
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |