Programming(179)
-
gunicorn 메모리 leak 해결하기.
파이썬에서 가장 간편한 웹 서버로 flask를 주로 이용한다. flask를 이용하다가 조금 규모가 커지거나 로직이 필요한 작업이 생기면, 이때부터 async를 고려하게 되는데, 나 같은 경우에는 gnicorn을 사용함으로써 async 문제를 풀곤 했다. 그런데 gunicorn 사용 후 어느 순간부터 메모리가 차츰 차츰 올라가는 것을 발견했다. '어.. 이거 왜 안떨어지지??' 메모리가 아주 느리지만 조금씩 올라가고 있는 것을 확인해 볼수가 있다. 엄청난 인고의 고통 속에 원인이 gunicorn이란 것을 밝혀냈다. 또한 구글에서 "gunicorn memory leak" 으로 검색해보면 나같이 메모리 릭으로 고생하고 있는 수많은 블로그들을 찾아볼 수가 있다. 원인은 gunicorn에서 생성한 worker 노..
2021.10.06 -
violation of our Malicious Behavior policy????
크롤링 하는 서버가 http -> https로 변경됨에 따라 나 역시 서비스 중인 앱을 https로 변경하였다. 단순히 주소만 https로 변경하면 되는 줄 알았는데, 그게 아니었다 ㅠ_ㅠ 인증서 없이 간단하게 https 통신을 가능하게 하기 위해서 아래의 코드처럼 모든 인증서를 허용해주는 객체를 만들고 httpsConnection에 설정을 추가해 준다. TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return new X509Certificate[0];} public void checkClientTrusted(X509Certificat..
2020.12.04 -
python에서 multi line으로 진행상황 나타내기
2016/11/19 - [Programming/python] - python에서 Progressbar 표현하기 python에서 Progressbar 표현하기 Python script를 실행하는데 이게 돌고 있는건지.. 아니면 멈춘건지 의구심이 들때가 간혹 있다. 언제 끝나는지 궁금하기도 하고... 그래서 python으로 progressbar를 표현할 수 있는게 없나 구글에서 찾아봄. htt.. yujuwon.tistory.com 위의 코드를 활용해서 multi line으로 화면에 진행상황을 출력하려고 했으나, 번번히 실패를 경험하게 된다. 가령 stdout에 '/r', '/n'등을 입력하고 flush를 하게 되면 출력하려고 하는 문장이 1줄로만 나타나거나, newline이 동작하여 아래로 쭉 써지게 된다..
2019.11.24 -
[ELASTIC SEARCH] full scan 하기
elastic의 index table을 full scan 하려고 아래와 같이 코드를 작성해서 호출했다. 처음에 total size를 가져온 후 from의 window size를 옮겨가며 전체 데이터를 가져오는 방식이다. 그런데 위와 같이 작업 할 경우 아래와 같은 에러메시지가 나타나게 된다. Limit of total fields 10000 in index has been exceeded. 해당 index에서의 최대 결과 윈도우는 기본으로 10000으로 설정되어 있으며( index.max_result_window) 해당 값을 넘어갈 시에 위와 같은 메시지가 발생한다. 내가 아무리 from을 13000, size를 100으로 줬다고 하더라도 es 내부에서는 전체 13100개를 가져온 후 0~13000개는 ..
2019.08.08 -
BloomFilter를 이용해서 데이터 찾기.
map-reduce, 혹은 spark를 사용함에 있어서 가장 비용을 많이 차지하는 부분은 map-reduce의 reduce, spark에서는 join 부분일 것이다.join을 할때는 되도록 데이터 셋을 최대한 줄인 후에 join을 하는 게 가장 바람직하다. 만약에 실제 내가 사용할 데이터는 2억건인데 input으로 들어온 데이터가 400억 건이면 400억 건에 대해 일단 2억건으로 줄인 후 join을 진행하는게 맞다. 그럼 400억 건을 2억건으로 어떻게 줄일까?? 물론 2억건을 메모리로 다 올린 후에 for문으로 찾아도 된다. 그러나 지금 설명하려고 하는 내용은 bloomFilter를 활용해서 데이터를 줄이는 방법을 말하려고 한다. 일단 BloomFilter에 대해 간략히 설명하자면, 해시 테이블을 활..
2018.10.30 -
안드로이드 해시 값 확인하기
카카오 API를 사용하기 위해서는 카카오 개발자 센터에서 안드로이드 키 해시를 등록해야 한다. 만약 해당 안드로이드와 다른 키 해시 값이 등록이 될 경우 API 값을 리턴 받을 수가 없다. 그리고 디버그용 해시 값과 릴리즈용 해시 값이 엄연히 다르기 때문에 두가지 경우의 해시 값을 모두 등록해주어야 한다. ( 카카오 개발자 센터에서 디버그 용, 릴리즈 용 애플리케이션을 각각 만들어야 한다는 소리) 우선 디버그용 키 해시 값 얻어오는 방법을 알아 보자. (맥 기준) $> keytool -exportcert -alias androiddebugkey -keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 그리고 ..
2018.10.05