백로그를 크게 했을때 생기는 문제점은 무엇이 있을까요??
글쓴이: hatbary / 작성시간: 월, 2003/12/01 - 5:42오후
안녕하세요?
레드햇 리눅스 8.0, 커널 2.4.18-14smp에서 서버를 만들고 있는데요..
지난번에도 질문을 드렸지만, 답변해주신 분들이 제시해주신 방법이 제겐 아직 좀 어려운 방법이라..(시간이 없어서..;;;;), 다시 한번 질문드립니다..
서버가 프로세스는 살아있는데, 얘가 어느순간 먹통이 되거든요..
클라이언트측에서 만약 연결이 안되면, 연결이 안됫다는 메시지를 띄우도록 해놨는데, 그것도 아니구, 그냥 전송할 데이터를 보내지도 못한채 그냥 가만히 있는겁니다..
물론 서버는 보란듯이 살아있구, 그냥 가만히 있져..아무런 연결도 받아들이지 못하는체..
이 원인이 무엇인지 알고 싶은데요..혹시 백로그가 너무 커서 그런것이 아닐까 생각합니다..보통 5에서 10정도로 백로그 값을 두는걸루 알구 있는데, 이 서버는 연결을 워낙 마니 받아들이는 터라 좀 크게 100으로 잡았거든요..
웬지 이것이 문제인거 같은데..혹시 아시는 분들은 답변주시기 바랍니다..
백로그의 크기가 크면 문제가 될까요??제 짧은 생각으로는 별 문제 안될거 같은데...^^a;;;;
글구 서버는 preforking방식이구요....접속수에 맞게 프로세스 수를 늘리구 줄여야 하는데 제가 내공이 부족하여 아직 그렇게 하지는 못하구 그냥 고정된 프로세스만 돌립니다..
그럼 고수님들의 답변에 미리 감사드리면서..꾸벅
Forums:
아마도 문제가 되지 않을까 싶네요...?예를 들어 소켓을 10개를 만
아마도 문제가 되지 않을까 싶네요...?
예를 들어 소켓을 10개를 만들고 100개의 backlog를 만든다고 생각을 하면...
10개의 서비스가 진행중인것들이 오래 걸리는 작업인 경우...
나머자 접속 하는 것들은 앞에 것들이 끝나길 기다려야 하니깐요...
이런 경우는 backlog 수를 최대한 줄여 주시고...
아니면...
process pool을 가변적으로 설계를 하시는게 가장 옳은 방법일거 같네요...
이에 대한건 semaphore, shared-memory 로 구현이 가능합니다.
한 번 시간 내서 서버 업그레이드에 도전 해보시길^^
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
헤헤..지난번 그분이군요^^지훈님이 제시한 방법대로 하구 싶은데.
헤헤..지난번 그분이군요^^
지훈님이 제시한 방법대로 하구 싶은데..짐 시간이 없어서..바빠서가 아니라...서버를 보여줘야 하거든요..ㅡㅡ;;
저도 그런식으로 만들고 싶은 욕심이 나는데, 암튼 지금은 현재 만들어진 방식내에서 문제를 최대한 해결해야 할거 같거든요..(좀 다분히 이기적이져???죄송함다)
그럼 의문점이 하나 생기는게, 프로세스가 클라이언트에 대해 처리하는 시간이 매우 짧거든요..계속 연결하고 있는 그런 상태가 아니라서..
그렇다면 대기하고 있는 애들이 족족 들어와서 일을 무난하게 처리하지 않을까 하는 제 짧은 생각인데..
지훈님은 어떻게 생각하시는지???^^
지훈님 의견에 머..이상한 딴지 거는게 결코 아니라..제가 몰라서 물어보는 것이니 오해마시기 바랍니다..^^;;
음...보통 서버가 클라이언트 요청에 대한 처리를 하는데 얼마나 걸리
음...
보통 서버가 클라이언트 요청에 대한 처리를 하는데 얼마나 걸리는지요?
시간이 짧다면...
backlog 에 들어가는 순서대로 서버에서 죽죽 처리가 되어야 정상 같은데-_-ㅋ
원래는 그렇게 되어야 하는데...
원래 프로그램이라는게 알 수가 없거든요...-_-ㅋ
어떤거 하나 때문에... 사소한 실 수 때문에 큰 버그가 나니깐요...
접속을 끝고 다시 접속 하는 부분을 한 번 확인해 보세요^^
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
아참..하나 말씀안드린게 있는데..클라이언트 측에서는 소켓이 KEEPAL
아참..하나 말씀안드린게 있는데..클라이언트 측에서는 소켓이 KEEPALIVE로 해놓구 서버측에서는 그렇지 않거든요..이것이 문제가 될수 잇을까요?
네트웍 사정에 따라 클라이언트 측에서 그렇게 설정해줬는데, 글구, 타임아웃도 1분으로 설정해줬는데, 그래두..타임아웃 걸린 넘들은 소켓이 끊어질거구..그럼 다음 넘들이 들어와야 할텐데..흠..미스테리군요..^^;;;
앗..질문에 답변을 안해드렸네요..rpc방식이라..처리하는데 1초
앗..질문에 답변을 안해드렸네요..
rpc방식이라..처리하는데 1초정도 걸립니다..
댓글 달기