필자는 Delphi 7 (Indy를 사용하는 ModBus 구성 요소 포함)에 프로그램을 작성했습니다. 내 컴퓨터에서 Indy 9를 사용하고 잘 작동합니다. ModBus 프로토콜을 통해 다른 컴퓨터와 잘 통신합니다. 그러나 프로그램이 다른 컴퓨터에서 실행될 때 CPU 90-100 %로드가 발생합니다. 불행히도이 기계는 내 사무실에있는 것이 아니라 "세계의 다른 쪽"에 있습니다. 이 기계가 인디 9 또는 인디 10을 사용하고 있는지 어떻게 알 수 있습니까? 그리고 더 나아가, 그것이 Indy 10을 돌리고 있다면, 그것은 문제가 될 수 있습니까? 아니면 매우 희박할까요?Indy 9를 사용하기 위해 필자가 작성한 프로그램을 고객 사이트에서 Indy 10을 사용할 수 있습니까?
답변
높은 CPU로드를 유발하는 원인을 찾으려면 AQTime 또는 SamplingProfiler과 같은 프로파일 러를 사용해보십시오.
이렇게하면 대부분의 시간 동안 실행되는 방법을 얻을 수 있습니다. 그러면 문제의 원인을 찾을 수 있습니다.
또는 응용 프로그램에 일부 로깅을 추가 할 수 있습니다.
확실한 대답은 심지어 패키지를 사용하는 경우, 그것은 실행 인디 9을 사용하여야한다, 아니
당신이 인디 9로 프로그램을 컴파일하는 경우 입니다. AFAIK, INDY 9를 사용하여 실행 파일을 컴파일하고 런타임시 INDY 10을 사용하는 방법은 없습니다. 원하는 경우에도 우연히 발생하지는 않습니다.
연결 원인 열기/닫기와 같은 일련의 동작을 거치는 테스트 응용 프로그램을 준비 할 수 있습니다. 계속 진행하기 전에 사용자에게 확인을 요청하면 ("계속 하시겠습니까? y/n"), 사용자는 모든 단계에서 CPU로드를 확인하여 중요한 작업을 감지 할 수 있습니다.
답변 해 주셔서 감사합니다. 나는 이것이 인디 문제라고 생각하지 않는다. 쿼드 CPU PC에서 CPU로드 또한 1-2 %에서 aprox로 증가합니다. 25 %. 이것은 회선을 열린 상태로 유지하면 발생합니다. 그러나 ModBus 클라이언트 측의 폴링마다마다 ModBus 서버를 분리하고 PC를 다시 연결하게하면 CPU로드가 항상 낮습니다. 뭐가 정상입니까? 모든 시간에 회선을 열거 나 모든 폴링을 연결하고 연결을 끊으시겠습니까? 폴링 주파수는 다음과 같습니다 : 유휴 모드 : 2000ms, 활성 모드 500ms.
쿼드 코어에서 25 % CPU = 코어 중 하나의 100 % –
플러스 : 질문에 사용 된 계정으로 로그인 한 경우 자신의 질문에 대한 답변을 추가하는 대신 해당 답변을 편집했을 수 있습니다 또는 어쩌면 당신은, 그리고 방금 레이블을 변경?). 어떤 경우 든 StackOverflow를 사용하면 질문과 대답의 긴 스레드를 피하기 위해 특별히 편집 할 수 있습니다. –
로그를 추가해야 무슨 일이 일어나는지 알 수 있습니다.
문제 자체가 연결 자체입니까? 또는 연결되어있는 동안 수행되는 작업입니까?
로그를 좁히면 사용자가 배가 고픈 프로세서를 줄이기 위해 코드를 변경할 수 있습니다.
AQTime 또는 SamplingProfiler를 사용하면 앞에서 설명한 것과 마찬가지로 도움이됩니다.
개인적으로 항상 모든 응용 프로그램에 기본적으로 로깅을 추가합니다. 일단 사이트에서 소프트웨어가 무엇을 바꿀지 모르고 단순히 로그를 켜면 시간을 많이 절약 할 수 있습니다.
- 1. Indy (Delphi)
- 2. Indy 연결 호출을 방해 할 수 있습니까?
- 3. Gmail의 SMTP 및 Indy 10을 사용하여 전자 메일을 보내려면 어떻게합니까?
- 4. Indy FTP TransferType
- 5. OnExecute 이벤트 (Indy)에서 IdHTTP를 사용할 수 있습니까?
- 6. Indy 10 FTP 비어있는 목록
- 7. indy 다운로드 속도 줄이기
- 8. Delphi/Indy IdHttpServer가 멀티 스레드되지 않았습니까?
- 9. Delphi의 Indy 클라이언트에서 TCP RST를 보낼 수 있습니까?
- 10. Indy TIdTCPClient는 로컬 TCP/IP 연결에 적합합니까?
- 11. Delphi 2009에 최신 Indy 10 빌드를 설치하십시오.
- 12. 필자가 작성한 Perl 모듈은 어디에서 설치해야합니까?
- 13. Delphi 6와 Indy SSL 연결이 작동하지 않습니다.
- 14. Indy, 쓰레드 전송 및 파기 된 컨텍스트
- 15. Delphi 2010의 Indy IdHttp Post 문제
- 16. Indy HTTP : 403에서 응답 내용 읽기
- 17. Indy 소켓 9에서 AccessViolation을받는 이유 IdTcpServer ServerExecute?
- 18. 썬더 버드의 Indy IdSMTP 및 첨부 파일
- 19. Indy Tidhttp에 대한 응답 시간 제한을 설정하는 방법이 있습니까?
- 20. Indy "SSL 라이브러리를로드 할 수 없습니다"와 Delphi 2007/Apache
- 21. Delphi Indy : SSL 라이브러리를 처음으로로드 할 수 없습니다. 재시도가 작동합니다.
- 22. Indy IMAP 클라이언트 (Delphi 2009)로 전자 메일 도착 알림
- 23. Indy 소켓은 하이퍼 스레드 컴퓨터에서 점차 속도가 느려짐
- 24. Delphi 2009의 Indy 10 기본 설치를 업데이트하는 적절한 방법은 무엇입니까?
- 25. Gmail 사용 DELPHI (Indy)에서 보내는 SMTP (TLS를 사용)
- 26. "Indy"(Delphi)에서 "WriteLn"으로 특수 문자열 보내기
- 27. Delphi - Indy HTTP 클라이언트를 사용하여 서버에 응답 보내기
- 28. Indy 구성 요소를 사용하여 다운로드, 일시 중지 및 다시 시작
- 29. 웹 응용 프로그램을 제공하기 위해 Jetty 사용하기
- 30. Indy 9와 Windows Server 2003 간의 비 호환성?
배포 된 실행 파일에 대해 이야기하고 있습니까? 모든 것을 실행 파일로 컴파일하지 않습니까? –
예, 런타임 패키지를 사용하더라도 컴파일 할 때와 동일한 인디 버전이어야합니다. –