당신이 사용한 uWSGI는 정말 max-requests-delta가 유효합니까?

2444 단어 uwsgiPython

결론


아무 생각 없이 IP로 넣으면 효과가 없어요.
인터넷 기사를 보거나 공식 수첩을 읽는 게 아니라 그것뿐만 아니라 버전을 사용한 원본 파일을 제대로 읽지 않으면 안 되고, 동작을 제대로 검증하지 않으면 안 된다면.
여러모로 고려한 끝에 구니콘으로 전입했다.

발단


지금은 참여한 안건에 UWSGI를 적용해 성능 개선을 위해 조정했고, 잘 알려지지 않은 시기에 오류가 자주 발생하고 있다.

조사하다.


어쨌든 UWSGI의 과정이 거의 동시에 모두 떨어지는 시기는 존재한다.
이 옵션에서 지정한 한도값을 처리하는 요청을 처리한worker가 다시 시작되었습니다. max-requests 설정에 들어갔습니다.
uWSGI는 지정된 워크맨의 점수를 매기는 과정을 시작해 움직이기 때문에 워크맨은 핵심이 있는 몇 분만 있으면 된다.
uWSGI가 여러 스태프에게 일을 균등하게 배정하기 때문에 어느 정도 이max-requests에 도달할 가능성이 높고, 이럴 때 uWSGI는 모든 요청을 받아들일 수 없다.
예를 들어 앞이nginx라면 502개의 잘못된 폭풍우가 임시로 발생한다.
이 문제의 대책으로는 max-requests-delta의 옵션이 있다.
예를 들어, 다음 기사 등에 설명되어 있습니다.
https://qiita.com/wapa5pow/items/f4326aed6c0b63617ebd
이 옵션은 Uwsgi 설명서에 설명되어 있습니다.
https://uwsgi-docs.readthedocs.io/en/latest/Options.html?highlight=max-requests-delta#max-requests-delta
설명으로 각 스태프의 maxRequests 값에 (worker id*delta)가 추가되었습니다. 이 옵션을 설정하면 완전하다고 말할 수 없어도 어느 정도 처리를 해제하고 다발 킬을 제거할 수 있습니다.
이 옵션은 uWSGI에서 설정한 것입니다.

다음은 이 글을 쓸 때 가장 최근에 제출한 ID의 대응 부분이다.
https://github.com/unbit/uwsgi/blob/f17bdbd1b59565a0d6e81e7b825ee6e08ec8e29e/core/uwsgi.c#L299
언뜻 보기에도 사용할 수 있을 것 같지만, 이를 사용하기 위해서는 최신 마스터 지점이 자체적으로 구축된 상태에서 사용할 수 있다.
UWSGI의 최신 발표는 현재 2.0.18이지만 적당한 출처를 보면 그런 선택이 없다.

이 옵션 자체는 5년 전부터 존재해 왔지만 무서운 것은stable에 없다.

끝맺다

좋은 웹페이지 즐겨찾기