나는 Thrift로 간단한 서버를 작성하려고한다. 처음에는 유망 해 보였지만 동시에 여러 고객이 연결된 문제가 발생했습니다. 나는 TThreadPoolServer를 사용하고 있는데, 이는 4 클라이언트가 연결 한 다음 다른 클라이언트를 차단하여 연결된 서버에서 하나를 죽일 때까지 사용합니다. 스레드 수를 늘리지 않고 더 많은 클라이언트 (수백 명 정도 가능)를 동시에 연결할 수있게하려면 어떻게해야합니까? 나는 작업자 쓰레드가 한 번에 하나의 클라이언트 요청을 수행 할 수 있다고 가정했으나 하나의 쓰레드가 닫힐 때까지 하나의 연결을 처리하는 것처럼 보인다. 나는 고객이 작업을 수행하기 위해 소켓을 다시 열어야하는 상황을 피하고자한다.슬리 프에서 동시 연결 수가 많다
5
A
답변
3
C++을 사용하여 서버를 구축하는 경우 TonfigureToolPoolServer 대신 TNonblockingServer를 사용하면 활성 상태 인 스레드 수에 관계없이 한 번에 많은 연결을 허용 할 수 있습니다.
실제로 말해서, 실제로 작업을 더 빨리 수행 할 수는 없지만 (처리기는 여전히 스레드 풀에서 실행됩니다), 더 많은 클라이언트가 한 번에 연결할 수 있습니다.
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
shared_ptr<MyHandler> handler(new MyHandler());
shared_ptr<TProcessor> processor(new MyProcessor(handler));
TNonblockingServer server(processor, protocolFactory, port);
2
풀에있는 네 개의 스레드 귀하의 제한은 SimpleThreadManager의 기본 생성자에 내장되어
이 ThreadManager 개체는 ThreadPoolServer의 coonstructor에 전달, 그래서이 객체의 생성자에 많은 수의를 통과한다
class SimpleThreadManager : public ThreadManager::Impl {
public:
SimpleThreadManager(size_t workerCount=4, size_t pendingTaskCountMax=0) :
workerCount_(workerCount),
pendingTaskCountMax_(pendingTaskCountMax),
firstTime_(true) {
}
...
};
스레드 풀의 크기를 늘리십시오.
관련 문제
- 1. 나가는 연결 수가 늘어납니다.
- 2. 동시 연결
- 3. 연결 수가 중요합니까?
- 4. Qt 계산기의 연결 수가 적습니다.
- 5. Apache에서 동시 연결
- 6. Silverlight의 동시 연결 수
- 7. IIS7에서 동시 연결 관리
- 8. Google 동시 연결
- 9. 승객 동시 연결 오류
- 10. SSIS - 동시 연결 제한
- 11. Java의 잠금없는 동시 연결 목록
- 12. 최대 동시 연결 (밀리 초)
- 13. 브라우저에서 최대 동시 연결 수
- 14. 동시 연결, 그래서 같은 형식으로
- 15. 최대 동시 연결 수 jBoss
- 16. XP/Vista/Win7에서 동시 연결
- 17. Rails3 + Datamapper - 동시 데이터베이스 연결
- 18. Facebook에 최대 API 연결 수가 있습니까?
- 19. 게시 된 끝점의 연결 수가 제한되어 있습니까? [Java 1.6.0_16]
- 20. 안드로이드 개발시 이클립스의 콘텐츠 어시스트가 너무 많다
- 21. SQL Express 2005/2008 동시 연결
- 22. 서버 측에서 동시 연결 수를 제한 하시겠습니까?
- 23. 특정 데이터베이스에 대한 동시 연결 수는 있습니까?
- 24. Oracle 10g - 동시 연결 평균 확인
- 25. PHP REDIS/MYSQL, 동시 연결 문제가 발생했습니다.
- 26. 인터넷을 통한 동시 Excel 통합 문서 연결?
- 27. RubyOnRails 응용 프로그램에서 25K 동시 연결 달성
- 28. 웹 서버에서 지원하는 동시 연결 수
- 29. 코코아 동시 네트워크 클라이언트
- 30. 데이터베이스에 대한 열린 연결 수가 많아 응용 프로그램이 작동하지 않습니다.
을하지만 그는 스레드의 수를 증가하지 않습니다
여기 코드는 NB 서버의 모습입니다. –
와우, 나는 완전히 그것을 놓쳤다. ( – JackOfAllTrades
당신은 무엇을 원하는가 보류 TaskCountMax를 늘리는가? – rmn