2011-12-20 3 views
1

소켓 프로그래밍을 기반으로 Java 클라이언트 서버 응용 프로그램을 개발했습니다. 현재 여러 클라이언트가 동시에 서버에 접속하고 있는지 테스트하고 있습니다. 내 서버에서 나는 이클립스, 크롬, mysqld, memcached, mysql 관리자, mysql 쿼리, my java 서버 및 동시 클라이언트 5를 실행 중이다. 요청 및 응답의 페이로드는 최대 5KB가 넘지 않는다. 클라이언트 당 약 5 개의 요청이 순차적으로 발생합니다. 1 클라이언트를 실행할 때 문제가 없습니다. 5를 동시에 실행하면 서버가 응답하지 않는 것 같습니다.Java 클라이언트 서버 프로그래밍, cpu maxing out

지금 제 질문은. 나는 바닐라 unbuntu 32 비트를 설치했습니다. 네트워킹 도움말을 미세 조정할 수 있습니까? 아니면 아마도 내 애플 리케이션 자체에 문제가 있다고 생각하십니까?

4 기가비트 램, 우분투 32 비트 듀얼 코어 프로세서를 실행하고 있습니다.

나는 좋은 블로그/링크를 찾고 있습니다.

편집 깊은 조사에서 내 서버가 요청을받지 못했다는 것을 깨달았습니다. 하지만 제 의뢰인이 보내고 있습니다. 어쨌든 서버가 요청을 받았는지 확인한 다음 드롭하기로 결정했습니다.

답변

1

문제의 성격은 서버의 일부 동시성 처리 문제인 것 같습니다. 서버에 객체를 올바르게 잠그고 있습니까? 교착 상태가 없는가? 코드가 스레드 안전합니까?

동시에 5 개의 요청은 아무것도 아닙니다. Chrome에서 5 개의 탭을 열면 볼 수 있습니다.

+0

예, 그렇게 생각했습니다. 나는 wireshark 냄새 맡고, 나의 요청이 서버에 도착한다는 것을 알아 차렸다. Ack가 있습니다. 하지만 어떤 이유로 서버 측 소켓/인스 트림이 요청 객체를 선택하지 않습니다. 예, 스레드 세이프합니다. 나는 올바른 장소에 잠겨 있습니다. 나는 다른 요청/응답을 보내고 있습니다. 이 요청은 serversocket.instream이 실행되지 않도록 요청합니다. 힌트/생각이 도움이 될 것입니다. 계속 유지하십시오. 감사. – Siddharth

+0

이 요청은 일관되게 통과하지 않습니다. 동일한 요청이 시간의 50 %를 전달합니다. – Siddharth

+0

샘플 서버/클라이언트 Java 코드를 다운로드하고 작동하는지 테스트 해 보시지 않겠습니까? 작동이 멈출 때까지 테스트하면서 기능별로 기능을 추가하십시오. –

관련 문제