본문 바로가기
무모한 도전-주식 인공지능 만들기

메모리 문제의 원인과 해결

by 인터넷떠돌이 2019. 7. 3.
반응형

안녕하세요?

 

지 지난번 포스팅에서 어떻게 메모리 부족을 일으키는 원인이 파이썬이 아니라 Open API라고 했는데, 이번 포스팅에서는 진짜로 그런지 한번 테스트를 잠시 해 보도록 하고, 그 다음에 이를 해결하기 위해 여러가지 시도를 했던 내용을 올리고자 합니다.

 

일단 cmd에서 parent_pytrader3.py를 실행시키고 나서, 한번 위 스크린샷에서 볼 수 있는 것처럼 막 시작하자 마자 프로세스의 상황을 보여주고 있습니다. 일단 메모리 사용량이 많은 순서로 한번 정렬을 했습니다.

 

그리고 나서 위 스크린샷처럼 일단 15분이 지나고 나서, 처음에는 위 스크린샷처럼 32비트로 설정이 되어 있는 python.exe들이 종료되지 않고 남았거나, 계속해서 메모리 사용량이 커지는 것으로 생각을 했습니다.

 

그런데 파이썬은 시간이 지나도 그렇게 까지 메모리 사용량을 많이 차지하는 것은 보이지 않았습니다. 대신에 설마했습니다만..........

 

 

시작한지 45분이 지나도 처음에 예상했던 것처럼 python.exe가 더 많은 메모리 사용량을 차지하는 것을 볼 수는 없었습니다.

 

오히려 1시간 쯤 흐르고 나서는 메모리의 사용량이 적어지는 것을 볼 수 있었습니다. 이렇게 해서야 어디서 메모리를 잡아 먹는지가 오히려 궁금해 지는 상황이었습니다.

 

그런데 프로세스를 종료시키고 나서야 겨우 눈치를 챌 수 있었습니다. 이 7메가씩 차지하는 NKStarter가 너무 많이 남아서 이래저래 메모리 부족을 일으킨 것이 아닌가 하는 생각을 할 수 있었습니다. 이래서야 이걸 어떻게 할 수 없다는 생각이 듭니다.

 

그래서 이 NKStarter만 선택해서 강제종료를 시켜야 할 필요가 있었습니다. 그런데 이 작업을 위해서 먼저 SWAPY라는 것을 사용하였습니다만, 특별히 이 프로세스만 고를 수 없었습니다.

 

그래서 일단 이 NKStarter가 정확하게 무엇인지 알아봐야 할 필요성이 있어서 다 종료시키기 말고, 일부를 남겨서 한번 조사에 들어가 보고자 했습니다.

 

이제서야 이게 opstarter라고 해서, Open API에 있는 응용프로그램 중에 하나라는 것을 알 수 있었습니다. 이래서야 이걸 어떻게 해야 할지 점점 헷갈리기 시작합니다.

 

우선 메모리 부족의 문제해결을 하기 위한 첫 단추는 여기까지 입니다. 여기서 나온 이 opstarter.exe라는 이 응용프로그램이 어디 있는지 알 수 있었으니, 이제 파이썬에서 외부 프로세스를 강제로 종료시킬 수 있는 기능이 있는지 없는지 한번 알아봐야 할 차례가 되었습니다.

반응형