2011-09-04 4 views
0

나는 매우 AJAX/데이터베이스에 의존하는 온라인 브라우저 게임을 운영하며, 발생하는 문제는 피크 시간대에 지나치게 높은 대기 시간입니다.네트워크 대기 시간 개선 - 온라인 게임 사이트

초당 루프로 서버를 검사하는 간단한 AJAX ping을 만들었으며 가장 최근 5 개의 핑의 실행/응답 시간이 평균화되어 화면에 표시된 "연결 속도"로 평균화됩니다.

대부분의 경우 인터넷 속도, 클라이언트의 다른 실행중인 웹 페이지 및 기타 여러 가지 사항에 따라이 대기 시간은 100 ~ 350ms 사이에서 기록됩니다. 그러나 내 서버의 피크 시간 인 오후 10 시부 터 오후 11시 (EST) 사이에이 대기 시간이 너무 길어 져서 내 AJAX 기능이 작동을 멈 춥니 다. 이 시간대의 레이턴시는 약 2000ms가 될 수 있으며 일부 사람들은 6800ms의 높은 레이턴시를 보입니다.

내 질문이 무엇입니까?이 가장 큰 원인은 무엇입니까? 내 서버의 하드웨어 문제입니까? 순전히 AJAX에 의해 구동되는 브라우저 게임을 만드는 것이 불가능합니까? 이 시간 동안 서버에서 문제가 발생하는 경우가 종종 있는데, 제어판에서 많은 "선택된 작업에 메모리를 할당 할 수 없습니다"오류가 발생하고 free을 SSH로 실행해도 RAM의 10 %가 사용되지 않습니다.

+1

그 연결 속도 thingie가 모든 클라이언트에서 실행되는 경우 서버로드에 크게 기여한다고 생각합니다. – fvu

+0

초당받는 요청 수는 얼마나됩니까? 간단한 웹 서버는 무한히 확장 할 수 없습니다. 대부분은 초당 수천 건의 AJAX 요청을 처리하는 것이 아니라 더 복잡한 페이지를 제공하는 것입니다. – Andreas

+0

node.js를 확인하십시오 – Loktar

답변

1

웹 응용 프로그램이나 데이터베이스의 어딘가에서 문제가 발생했습니다. 이것은 너무 많은 장소에있을 수 있으며 따라서 가능한 많은 결의안을 가지고있어서 그것을 열거 할 수 없습니다. 데이터베이스 따라서, 데이타베이스에서 대기 시간

  • 경합을 증가 반환 때까지 스레드를 잠급니다 데이터베이스에 대한 동기 호출을하고 있기 때문에 들어오는 요청을 처리 할 수 ​​

    1. 없음 스레드 : 당신에 대해 생각할 수있는 것들 중 일부 수평. 진정한 동시성을 지원하기 위해 데이터에 대한 파티셔닝을 사용하고 있습니까?
    2. 직접 주소 지정 가능한 리소스로 검색 될 수있는 웹 앱을 통해 정적 콘텐츠를 제공하고 있습니까?
    3. 웹 응용 프로그램을로드 균형 조정 중이십니까?
    4. 웹 앱에서 캐싱을 사용하고 있습니까?

    "문자열의 길이는 얼마입니까?"

    희망이 있으면 도움이 될 것입니다.

  • +0

    그 시점에서 혼란 2 : 동시성을 달성하기 위해 분할? 심지어 MyISAM의 경우처럼 테이블이 일상적으로 잠기지 않는 InnoDB 테이블이라 할지라도? 유효한 포인트, +1 – fvu

    +0

    이런 것들을 고려해 주셔서 감사합니다. 게임을 최적화하려고 할 때 고려해 볼 것입니다. –

    +0

    @fvu - 당신은 물리적으로 데이터를 다른 데이터베이스로 분리하고 (정확한 시간을 말하며) 다른 데이터베이스로 리졸버를 사용하여 정확한 소스를 가리 키도록 파티션합니다. 또한 데이터 파일을 다른 실제 디스크 파티션으로 나누는 방식으로 파티션을 나누는 것도 알고 있습니다. 이것은 또한 좋은 생각이지만 데이터베이스 벤더에 따라 항상 쉬운 것은 아닙니다. –

    관련 문제