2012-09-16 4 views
5

Lighttpd, nginx 및 기타 기술자는 AIO, sendfile, MMIO, 캐싱 및 epoll 및 잠금 해제 데이터 구조와 같은 최대 응용 프로그램 성능을 제공하는 다양한 기술을 사용합니다.트랜잭션 속도를 향상시키는 기술

제 동료와 저는이 기술 중 많은 것을 사용하는 작은 응용 프로그램 서버를 작성했으며 서버 정적 파일도 사용할 수 있습니다. 그래서 우리는 아파치 벤치에서 테스트했고 lighttpd와 nginx를 비교해 보았고 적어도 100 바이트에서 1K의 파일에 대한 정적 컨텐츠의 성능과 일치 시켰습니다.

그러나 G-WAN과 동일한 정적 파일을 통한 트랜잭션 속도를 비교할 때 G-WAN은 몇 마일 앞서 있습니다.

이 질문은 약간 주관적인 내용 일 수 있습니다.하지만 피에르 고티에 (Pierre Gauthier)가 GWAN에서 놀라운 성능을 발휘할 수 있다고 언급 한 분명한 기술을 제외하고는 어떤 기술이 필요합니까?

답변

4

지난 수년간 G-WAN 서버에 이어이 G-WAN 포럼에서이 질문을 다루는 (많은) 회담을 읽었습니다.

반복적으로 프로그램이었다 해결 있었는지 내가 기억하는 바로는

:

  1. 아키텍처
  2. 구현 (방법 전체 분기 (특정 비교가의 nginx, Lighty는 체로키로 만들어졌다), 구문 분석 요청 및 응답 동적, 정적, 처리기)

피레 종종 mentionn : 건물)

  • 희박 공통 경로 (모든 유형의 요청에 다음 경로를 만들었다 다른 서버에서 을 설명 할 수 있습니다. 특정 아키텍처 및 구현에서 무엇을에서 느려지 게 만들었습니다.

    시간이 갈수록 G-WAN은 점점 더 많은 기능 (C# 스크립트 지원, 다음 버전에서는 역방향 프록시와로드 밸런서가 필요함)이 더 많은 것으로 보이기 때문에 위의 3 가지 포인트가 더 많고 더 중요.

    이것은 G-WAN의 새로운 릴리스가 이전 버전보다 더 빨리 기꺼이하는 이유 일 것입니다. 작업이 많을수록 비용이 많이 들기 때문에 여분의 지방을 제거해야합니다. 경주 용 자동차 나 비행기와 마찬가지로 이것은 점차적 인 과정입니다. 하나는 다른 하나를 더 필요로합니다.

    G-WAN 속도의 '비밀'을 찾고 있다면 핵심 포인트가 여기 있다고 생각합니다. 그러나 좀 더 자세한 내용을 원하면 G-WAN 작성자에게 직접 이야기해야합니다.

  • +0

    디자인이 가장 분명합니다. 그러나 후속 테스트에서는 약 30 %의 CPU 부하가 발생합니다. 병목 현상은 네트워크 카드 또는 커널 인 것 같습니다. GWAN은 여전히 ​​우리가 가진 성과를 능가합니다.네트워크 카드를 통해 패킷을 올리는 것과 관련된 몇 가지 특수 초기화 트릭이 있습니까? – Matt

    +0

    병목 현상이 커널의 경우 G-WAN은 다른 것보다 빠를 수 없습니다. G-WAN의 CPU 부하는 * 사용자 모드 * 코드가 (훨씬) 빠르기 때문에 더 낮습니다. ** hello.c ** 서블릿은 디스크를 건드리지 않으므로 커널이 파일을로드하는 데 관여하지 않으며 G-WAN은 nginx 모듈보다 빠릅니다 (G-WAN 서블릿과 달리 동적으로로드되지 않음). 그래서 이점이 있어야한다). 더 빠르고, 희박한 코드와 향상된 프로그램 아키텍처. 이것이 바로 G-WAN의 개요입니다. – Gil

    1

    G-WAN 타임 라인을 확인하십시오. 2011 년 8 월 8 일에 업데이트되면서 그가 무엇을 사용하고 있는지 알 수 있습니다.

    G-WAN Timeline

    피에르는 G-WAN은 G-WAN의 핵심 기능에 대기가없는 키 - 값 저장소에게있어 많이 사용하는 언급했다. 잠금 장치가 없으므로 속도가 더 빨라집니다.

    그는 또한 스레드를 처리하기 위해 Lorenz Waterwheel에서 영감을 얻은 기술을 사용합니다. 어떻게 작동하는지 모르겠지만 가능한 모든 경우에 G-WAN을 더 빨리 실행할 수 있다고 말했습니다.

    +0

    KV 저장소는 가상 호스트 및 다국어 서블릿과 같은 목록에 사용되는 반면 Lorenz Waterwheel은 작업자 스레드를 처리하기 위해 아키텍처가 구성되는 방식입니다. 요점은 부하 상태가 변화 함에도 불구하고 최상의 응답 성을 제공하기 위해 Waterwheel이 부하와 함께 동적으로 조정된다는 것입니다. – Gil

    +0

    정적 페이지를 제공하는 것이 키/값 저장소를 만질 필요가 없다는 점을 제외하고는. 그가 캐시로 사용하지 않는 한 게다가, 나는 그것이 mdb보다 빠르다는 것을 의심한다. 사실 로렌츠 워터 휠 (Lorenz Waterwheel)이 무엇인지 찾아내는 것은 본질적으로 무작위를 의미합니다. 내 추측에 따르면 그는 좋은 말을하는 전문 용어를 만들어 내고 있지만 실제는 그렇지 않다. – Matt

    +0

    mdb가 G-WAN KV 저장소보다 빠르다는 것을 증명할 수 있습니까? Lorenz Waterwheel은 무작위가 아닙니다. 하나의 다른 개념은 초기 조건에 대한 민감도입니다. 초기 조건으로 코어에 적용 할 수 있습니다. 알고리즘은 1,2,4 ... 코어를 사용할 때 완전히 다르게 작동합니다. 제 추측으로는 그가 실제로 어떻게하는지 모르기 때문에 그것이 의미가없는 것처럼 보입니다. –

    관련 문제