GWT RCP를 사용하여 GWT에서 웹 응용 프로그램 빌드를 개발 중입니다. 응용 프로그램은 인스턴트 메시징을 위해 설계되었습니다.대기열에서 서블릿 대기 요청
메시지에서 servlete를 대기 중이고 해당 채널을 다시 구독하면 모든 것이 계획대로 작동합니다. 서버에서 요청을 기다리는 수가 5 개를 초과하는 경우에도 6 번째 요청이 처리되기 시작하지 않고 이전 요청 중 하나가 처리 될 때까지 대기합니다. 문제가 redis (jedis 라이브러리를 사용하고 있습니다)에 있는지 잘 모릅니다. 그러므로 currentThread에서 수면을 직접 호출하려고했으나 같은 동작을 보였습니다.
public class TestServiceImpl extends RemoteServiceServlet implements
TestService {
@Override
public void syncWait(Date time) {
try{
Thread.currentThread().sleep(10000l);
}catch (Exception e) {
getLogger().error("sleep error", e);
}
return ;
}
}
5 개의 요청이 열릴 때 정적 인 내용을로드하지 않는 것은 특정 서블릿뿐 아닙니다. 나는 jety, glassfish와 바람둥이에 그것을 시험해 보았다.
글래스 피쉬의 threadpool 설정을 변경하려고했는데 maxthread-count를 200으로 설정했지만 작동하지 않았습니다.
세션 및 서버 당 처리되는 요청 수를 늘리는 방법에 대한 조언을 구할 수 있습니까?
답해 주셔서 감사합니다. 그러나 Comet과 NIO가 필요한지 확실하지 않습니다. Comet은 동시 요청을 처리하기위한 것입니다. 동시 요청을 처리 할 필요가 없습니다. 서버가 5 개의 연결을 열었을 때 요청 처리를 시작하는 데 문제가 있습니다. 이것에 대한 혜성 해결책은 무엇입니까? – LuiGi
일반적으로 서블릿의 쓰레드에서 'sleep'을 호출하는 것은 나쁜 생각입니다. 다중 요청이 유휴 상태라면 Comet과 NIO가 필요합니다. 5 개 이상의 연결에 관해서는 5 개 이상의 연결을 확실히 처리 할 수 있어야하므로 어딘가에 구성 결함이 있어야합니다. – Femi