와 콘솔과 통신에 실패 작업자가 짹짹 텍스트를 구문 분석하고 내가로드 테스트를하는 URL로 보냅니다. 그라인더는 문제없이 작동하지만 파이썬 urlencode가 유니 코드 또는 라틴 인코딩 된 항목 중 일부에서 실패하고있는 것으로 나타났습니다 (즉, 결과적으로 일부 스레드가 예기치 않게 죽어 가고 있음).그라인더 에이전트는, 난 그냥 그라인더 (! 그것을 사랑)와 함께 연주하기 시작했지만 약간의 호기심 행위가 발생했을 이상의 몇 근로자
나는 자이 썬이 자바에서 실제로 자바라고 생각했기 때문에 의심스러운 문자열에 java.net.URLEncoder를 사용하고 어떻게 동작하는지 살펴 보았다.
그래서 내 자이 썬 스크립트의 상단에 나는
from java.net import URLEncoder
을 추가 (mystring에 'UTF-8') UrlEncoder.encode에 다시 떨어졌다 시도/캐치에 파이썬를 urlencode를 감싸
그리고 한 명의 작업자 만 테스트 할 때 완벽하게 작동하는 것처럼 보였습니다. 내가 2 또는 3 이상 근로자의 수를 올렸다 그러나 일단 노동자는 시작하지만 다음 부당하게 긴로드 시간 후 다음과 같은 오류를 던지고, 콘솔과 통신 할 수 실패 :이 시간 제한을 좋아 본질적으로 보이는
2012-11-15 15:59:04,287 ERROR worker-bootstrap: Error running worker process
net.grinder.communication.CommunicationException: Exception whilst sending message
at net.grinder.communication.AbstractSender.send(AbstractSender.java:57) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.QueuedSenderDecorator.flush(QueuedSenderDecorator.java:60) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.GrinderProcess.sendStatusMessage(GrinderProcess.java:638) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.GrinderProcess.run(GrinderProcess.java:430) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:86) [grinder-core-3.11.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:59) [grinder-core-3.11.jar:na]
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.6.0_37]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) ~[na:1.6.0_37]
at java.net.SocketOutputStream.write(SocketOutputStream.java:136) ~[na:1.6.0_37]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) ~[na:1.6.0_37]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) ~[na:1.6.0_37]
at java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1793) ~[na:1.6.0_37]
at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:699) ~[na:1.6.0_37]
at net.grinder.communication.AbstractSender.writeMessageToStream(AbstractSender.java:90) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.StreamSender.writeMessage(StreamSender.java:70) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.AbstractSender.send(AbstractSender.java:53) ~[grinder-core-3.11.jar:na]
... 5 common frames omitted
나에게 (부러진 파이프, 콘솔 중 하나가 듣기에 지쳤거나 에이전트가 연결을 시도하는 데 지쳤다는 것을 암시 함). 하지만 왜 그런지 모르겠습니다. (도 아니다 나는 예외 "동안"라는 단어를보고 어떻게 생각해야합니다 어떻게을 생각합니다. Strewth, 해커! 셨나 너는 쓸모 메모리의 불길한 누수를 참조?)
지금까지 손에서 코드 문제로, I (현재 구현 된) Python의 기본 동작을 더 잘 수행 할 수 있습니다. urlencode -이 문제를 개선하기위한 몇 가지 트릭을 알고 있지만 지저분 해지는 경향이 있으며 일부는 자이 썬에서 작동하지 않을 것이라고 추측합니다.
하지만 여기 전반적인 수준에서 궁금합니다. 자바 URLEncode는 3 인 이하의 직원에게 잘 작동합니다 - 왜 더 많은 인력이 필요합니까?
추측으로 :
는나는 시스템 리소스 부족 있습니까?
공포 - 각 노동자는 자신의 JVM을 만들고있다?
글쎄요, 확인했는데 그렇습니다. 그러나 이것은 전에 것을 멈추지 않았습니다. 왜 지금? 내 맥에 2 프로세서가있다 - 나는 만약 이것이 문제 였다면, 우리는 3 명의 노동자에서 실패해야한다고 생각하지만, 그렇지 않다. 4 또는 5, 예.
자이 썬에서 기본 Java 라이브러리를 사용하고 있습니다. 이유가 무엇입니까?
통찰력을 환영합니다.
감사 JB