<검색서버> TPS 테스트에서 Request Fail
인덱스를 20G 정도 쓰고 있는 검색엔진을 개발하고 있습니다.
File System으로 데이터를 가지고 있습니다.
DISK I/O가 많으니 여러가지로 문제가 발생하고 있습니다.
(30 User/Sec 하니까 Load Avrg가 7까지 올라가는 군요. :? )
TPS( Transcation Per Sec)를 테스트 하고 있습니다.
5 User/Sec 로 2분간 테스트 하면 어느정도 버티다가
Request Fail이 납니다.
(Request Fail은 20초이상 응답이 없을때 발생하도록 해놓았습니다.)
아직 원인은 파악 중입니다만,
이 테스트에 잘 못될 수 있는 부분이 많아서요.
검색서버는 pthread를 사용합니다.
검색서버는 TCP/IP를 사용해서 포트를 열고 클라이언트
와 정의된 프로토콜을 사용해서 통신을 합니다.
TPS프로그램은 회사사람이 만든건데...
아쉬운것은 직접 접속을 하지 않고 간접적으로 웹을 호출해서,
문제가 어딘지 확인하기 힘들다는 단점이 있습니다.
TPS프로그램은 자체적으로 Java, thread로 구현했습니다.
TPS 테스트 프로그램은 직접 IP:PORT로 접속하지 않고,
웹을 호출하고, html(정확히 PHP)이 TCP/IP로 서버와 접속합니다.
("http://test.server/test.php&key=연습" 이런식으로 호출합니다.)
문제가 정확히 어디서 발생하는지 모르지만, 몇가지 시나리오가 있습니다.
- 첫번째, 파일오픈이 많으므로 시스템적으로 문제가 발생했다??? 최대파일오픈 갯수 등등...
둘째, ps나 netstat로 보면 포트접속은 여전히 있는걸로 봐서 서버의 accept 이후에 잘못된것 같다???
세째, 쓰레트에서 문제가 발생했다??? recv에서 select에서 time out을 15초로 했는데도 여전히 Request Fail(20초이상)이 발생했습니다.
네째, TPS 테스트 웹서버에서 문제가 생겼다???
ulimit 를 어떻게 설정해야할까요?
$ ulimit -a
core file size (blocks) 0
data seg size (kbytes) unlimited
file size (blocks) unlimited
max locked memory (kbytes) unlimited
max memory size (kbytes) unlimited
open files 65536
pipe size (512 bytes) 8
stack size (kbytes) 65536
cpu time (seconds) unlimited
max user processes 32768
virtual memory (kbytes) unlimited
검색엔진 서버를 현재 이렇게 바꿔놓았습니다.
제가 잘 몰라서 질문에도 두서가 없는것 같습니다.
많은 도움 부탁드립니다.
감사합니다.
[/]
댓글 달기