Erlang으로 작성된 웹 서비스가 있습니다. 일부 요청으로 인해이 서비스는 Erlang에서 다른 웹 서비스를 호출합니다. 두 번째 서비스는 매우 느리고 일부 요청 실행 시간은 1 분에 도달합니다. 이 서비스에 대한 요청 횟수는 매우 제한적이므로이 서비스에 대한 모든 요청에 대해 시간 제한을 사용합니다. 저는 다른 http 클라이언트를 사용했습니다 : gun
, httpc
, hackney
및 기타. 시작 시스템이 예상대로 작동하면 몇 분 후에 제한된 요청 수가 전송되지만 전혀 요청이 전송되지 않습니다. 모든 http 클라이언트는 동일한 결과를 제공합니다. 여기에 설명 된 유사한 문제 : http://comments.gmane.org/gmane.comp.lang.erlang.general/73146 제발, 조언을 해주세요, 문제를 일으킬 수있는 것은 무엇입니까? 나는 ulimit와 다른 환경 옵션을 검사했다, 모든 것은 괜찮다.높은 부하에서 Erlang http 클라이언트가 작동하지 않습니다.
1
A
답변
0
모든 http 클라이언트에서 동일한 동작이 발생한다고 가정하므로 코드가 일반적인 변수라고 생각합니다.
디버깅을 시작하는 것이 HTTP 호출을 조롱하는 것이 좋습니다. 이 작동하는 경우 대신
{ok, Result} = httpc:request("http://my.oracle/dostuff")
사용
do_request(_Url) ->
{ok, {200, <<"fake results">>}}.
....
% inside some other method
{ok, Result} = do_request("http://my.oracle/dostuff")
의 오랜 시간 (서버의 느린 응답을 시뮬레이션)을 위해 잠을 당신의 do_request
을 수정하려고합니다.
관련 문제
- 1. Squid가 높은 부하에서 연결을 바이 패스하도록하는 방법
- 2. 엠버 경로 비 직렬화가 부하에서 작동하지 않습니다.
- 3. 높은 부하에서 일반 gc에 대한 jvm conf
- 4. Erlang 디버거가 작동하지 않습니다.
- 5. 높은 차트가 작동하지 않습니다.
- 6. Erlang BERT-RPC 클라이언트가 있습니까?
- 7. Erlang 원격 셸이 작동하지 않습니다.
- 8. document.ready가 모든 부하에서 실행되지 않습니다
- 9. PushBot 안드로이드 클라이언트가 작동하지 않습니다.
- 10. Erlang http 클라이언트 본문이 문자열로 해석되지 않습니다.
- 11. 클라이언트가 높은 포트 번호를 사용합니다
- 12. app.use에서 defiend 함수가 높은 부하에서 오버 헤드를 가질 수 있습니까
- 13. 핵심 서비스 클라이언트가 작동하지 않습니다.
- 14. Rails 3.2.8 before_save 모델이 많은 서버 부하에서 제대로 작동하지 않습니다.
- 15. 원시 HTTP 클라이언트가 데이터를 반환하지 않습니다.
- 16. Erlang 모듈 mod_confirm_delivery가 Ejabberd와 작동하지 않습니다.
- 17. 이미지가 bpopup의 부하에서 숨김
- 18. ruby : websocket 서버와 websocket 클라이언트가 작동하지 않습니다
- 19. JQuery가있는 트위터 클라이언트가 Firefox에서 작동하지 않습니다.
- 20. json 및 http 클라이언트가 느림
- 21. 아파치 HTTP 클라이언트가 요청
- 22. HTTP 클라이언트가 연결을 닫아야합니다.
- 23. WCF RESTful 서비스에 연결중인 클라이언트가 작동하지 않습니다.
- 24. HTTP 응답이 작동하지 않습니다.
- 25. HTTP PUT이 작동하지 않습니다.
- 26. http $. android가 작동하지 않습니다.
- 27. 클라이언트가 http 응답을 수신했는지 확인하십시오.
- 28. Google API 루비 클라이언트가 작동하지 않습니다.
- 29. 허브 외부의 SignalR 호출 클라이언트가 작동하지 않습니다.
- 30. 통신 서버 -> 클라이언트가 작동하지 않습니다.
백엔드 (2 차 서비스)는 어떤 종류의 연산을 수행합니까? 저속 IO는 네트워크 속도에서부터 병목 현상에 이르기까지 많은 것들을 냄새로 느낄 수 있습니다. 요청을 단순화하려고 시도 했습니까? –
두 번째 서비스는 Oracle DB 용 인터페이스이며 일부 쿼리를 수행합니다. 왜냐하면 DB에 대한 연결의 양이 제한되어 있기 때문에 많은 요청이 대기열에있어 자유로운 연결을 기다리고 있습니다. 첫 번째 서비스 (두 번째 서비스에서 새 연결 없음)에서 http 요청이 중단되면 두 번째 서비스는 무료이며 DB에 대한 모든 연결을 사용할 수 있습니다. 처음 서비스를 다시 시작하면 모든 것이 일정 시간 동안 반복되고 상황이 반복됩니다. 내가 아는 한 - 첫 번째 서비스에서 많은 HTTP 연결을 대기하는 문제가 있습니다. –