웹서버(아파치)<->WAS(톰캣)<->DB(MYSQL) 커넥션 수 질문입니다.

2015-08-07 14:41

제가 운영하는 사이트가 있습니다. 너무 궁금하고 알수있는 방법이 없어 이렇게 글남깁니다.

구조는 다음과 같습니다.

  • 1.웹서버 프로그램 한개 실행

  • 2.WAS 톰캣이 5개 실행, 세션 클러스트링 연결

  • 3.MYSQL 프로그램 한개 실행

제가 궁금한 점은 다음과 같습니다.

  • 1.웹서버 가동 프로세스는 현재 20개입니다. maxclient는 2048로 잡혀있습니다.

  • 2.WAS는 5개 프로세스 개당 50개 스레드 총 300개정도가 있습니다. (톰캣 1개당 설정 AJP maxThread=500, connection pool=500 되어있습니다.)

  • 3.MYSQL은 대략 50개정도 프로세스(PROCESSLIST테이블 조회)가 있습니다.

제가 생각하기에는 웹서버 프로세스가 20개있다면 WAS도 20개 MYSQL도 20개여야 한다고 생각했습니다.

정작 서버에는 20<->50<->50 입니다 왜 이런걸까요?

3개의 의견 from SLiPP

2015-08-14 13:01

connection 과 thread 에 대해 오해하고 계시는 것 같습니다. thread pool, connection pool 은 별개로 보셔야 할 것 같습니다. 서로의 역할의 범주가 다릅니다. thread와 connection간에 is a, has a 관계를 고민해보시면 답이 나오실듯 합니다.

2015-08-21 10:06

제가 정확히 이해하고 있는건지 모르겠으나 아파치 프로세스 안에 커넥션풀을 관리하는 쓰레드가 있고 그 커넥션풀안의 여러 커넥션들이 상황에 따라 n:n으로 was와 통신하는 것으로 알고 있습니다. 즉 커넥션이란건 특정 프로세스의 특정 쓰레드에 종속되고 점유되는 것은 아니고, 상황에 따라서 다른 프로세스, 다른 쓰레드 등으로 대상이 바뀔 수 있다고 이해하고 있습니다. 다만 커넥션을 새로 맺는 것은 꽤 큰 비용이 드니 세션 등을 이용한다던가 하여 커넥션을 유지하는 방법이 따로 있을 것 같네요.

의견 추가하기

연관태그

← 목록으로