Apache가 동시 연결 요청 수를 늘리는 방법
Apache를 HTTP 서버로 사용하는 사이트에서는 필연적으로 이 문제에 직면하게 됩니다. Apache의 로드는 매우 낮지만 웹 서버에 액세스하는 속도는 매우 느립니다. 스크립트 프로그램의 원인을 제외하고 보면 기본적으로 Apache 설정의 문제입니다.
다음 내용은 이 문제를 해결하는 데 도움이 될 수 있습니다.
1. 먼저 Apache에서 사용하는 MPM(Multi-Processing Module, 다중 처리 모듈)을 이해해야 합니다
MPM은 Apache의 핵심 역할은 네트워크 연결을 관리하고 요청을 예약하는 것입니다.
Apache2.0의 MPM은 세 가지 유형(perfork, 작업자, 이벤트)으로 구분됩니다. perfork는 Apache1.3에서 상속되었으며, 보다 안정적인 성능과 더 나은 호환성을 제공할 수 있습니다. Worker는 Apache2.0에 추가된 새로운 방법으로 스레드 제어 방법을 채택하여 시스템 오버헤드와 프로세스를 절약할 수 있습니다. perfork보다 데이터가 많지만 동시에 호환성이 좋지 않고 많은 오래된 프로그램이 작업자에서 작동할 수 없습니다. 이벤트는 아직 실험 단계에 있으므로 각 작업에 다른 프로세스를 할당하면 안 됩니다. 이때 사용됩니다.
httpd -l
명령을 통해 현재 Apache에서 사용되는 MPM을 확인할 수 있습니다.
이 기사에서는 Perfork 방법에 대해서만 설명합니다
2. Perfork 작동 방식 이해
Apache2.0의 구성 파일 httpd.conf를 보면 perfork의 구성 부분을 볼 수 있는데 대략 다음과 같습니다.
서버한도 256
시작서버 5
MinSpareServer 10
MaxSpareServers 15
최대클라이언트 256
MaxRequestsPerChild 4000
Apache가 시작되면 Apache는 자동으로 StartServers 프로세스를 생성하고 MinSpareServers와 MaxSpareServers 사이의 유휴 프로세스 수를 유지하기 위해 최선을 다합니다.
유휴 프로세스가 MinSpareServers보다 작은 경우 Apache는 초당 약 1개의 속도로 새 프로세스를 생성합니다.
유휴 프로세스가 MaxSpareServers보다 작은 경우 Apache는 초과 유휴 프로세스를 삭제하고 서버 리소스를 해제합니다.
최대 프로세스 수는 MaxClients에 의해 제어됩니다. Apache1.3에서는 최대값을 256개까지만 설정할 수 있습니다. 그러나 Apache2.0에서는 구성 시작 부분에 ServerLimit 항목을 추가하여 256개 제한을 깰 수 있습니다. 이 경우 MaxClients ≤ ServerLimit ≤ 20000
MaxRequestsPerChild는 처리 후 각 프로세스가 자동으로 삭제되는 요청 수를 제어하는 데 사용됩니다. 이 매개변수를 0으로 설정하면 무제한(즉, 프로세스가 삭제되지 않음)을 나타낼 수 있습니다.
3. 퍼포크 최적화
우선, 상대적으로 로드가 많은 웹사이트의 경우 프로세스 제한인 256개로는 충분하지 않습니다. 서버가 제한인 256개에 도달하면 다음 액세스를 대기해야 하기 때문에 일부 서버에서는 로드가 발생합니다. 높지는 않지만 접속이 느린 이유 중 하나. 따라서 먼저 서버가 사용 중일 때 서버의 프로세스 수를 이해해야 합니다.
ps -ef|grep httpd|wc -l 명령을 통해 현재 시스템의 Apache 프로세스 수를 알 수 있으며, ServerLimit 및 MaxClients 설정을 통해 서버의 소프트 확장 목적을 달성할 수 있습니다.
그러다가 트래픽이 가장 많은 기간에는 갑자기 동시 연결이 많아졌다가 갑자기 방문 수가 훨씬 적어지는 현상이 자주 발생합니다. Apache가 충분한 수의 준비 프로세스를 준비하지 않으면 액세스는 Apache가 초당 하나의 새 프로세스를 추가할 때까지 기다린 다음 중복 프로세스를 삭제할 수 있습니다. 그러면 Apache는 프로세스를 생성하고 삭제하는 데에만 바쁠 수 있으므로 액세스가 크게 줄어듭니다. 속도. Apache가 쓸모없는 작업을 수행하느라 바쁠 필요가 없도록 StartServers, MinSpareServers 및 MaxSpareServers를 적절하게 늘릴 수 있습니다.
마지막으로 MaxRequestsPerChild를 0으로 설정하지 않는 것이 좋습니다. 0이 아닌 값으로 설정하면 Apache에서 실행 중인 애플리케이션이 언제 잘못되어 메모리 누수를 일으킬지 알 수 없으므로 메모리 누수로부터 Apache 프로세스를 보호할 수 있습니다.
설정하고 나면 다음과 같습니다.
ServerLimit 1000
시작서버 30
MinSpareServer 30
MaxSpareServers 45
최대클라이언트 1000
MaxRequestsPerChild 4000
세부 단계 http://www.liaoxiansheng.cn/?p=496

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











소개 코드 예제를 통해 Python 프로그래밍에 대해 알아보세요. Python은 배우기 쉽지만 강력한 프로그래밍 언어입니다. 초보자의 경우 Python 프로그래밍의 입문 코드 예제를 이해하는 것이 매우 중요합니다. 이 문서에서는 빠르게 시작하는 데 도움이 되는 몇 가지 구체적인 코드 예제를 제공합니다. Print HelloWorldprint("HelloWorld") 이것은 Python에서 가장 간단한 코드 예제입니다. print() 함수는 지정된 내용을 출력하는 데 사용됩니다.

PHP 변수는 프로그램 런타임 중에 값을 저장하며 동적 및 대화형 웹 애플리케이션을 구축하는 데 중요합니다. 이 기사에서는 PHP 변수를 심층적으로 살펴보고 10가지 실제 예제를 통해 실제로 작동하는 모습을 보여줍니다. 1. 사용자 입력 저장 $username=$_POST["username"];$passWord=$_POST["password"] 이 예에서는 양식 제출에서 사용자 이름과 비밀번호를 추출하여 추가 처리를 위해 변수에 저장합니다. 2. 구성 값 $database_host="localhost";$database_username="username";$database_pa를 설정합니다.

Java 버블 정렬의 가장 간단한 코드 예제 버블 정렬은 인접한 요소의 비교와 교환을 통해 순서가 지정된 순서로 정렬되는 순서를 점진적으로 조정하는 일반적인 정렬 알고리즘입니다. 다음은 버블 정렬을 구현하는 방법을 보여주는 간단한 Java 코드 예제입니다. publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

제목: 초보자에서 숙달까지: Go 언어에서 일반적으로 사용되는 데이터 구조의 코드 구현 데이터 구조는 프로그래밍에서 중요한 역할을 하며 프로그래밍의 기초입니다. Go 언어에는 일반적으로 사용되는 데이터 구조가 많이 있으며 이러한 데이터 구조의 구현을 마스터하는 것은 좋은 프로그래머가 되는 데 중요합니다. 이 기사에서는 Go 언어에서 일반적으로 사용되는 데이터 구조를 소개하고 독자가 이러한 데이터 구조에 익숙해지는 데 도움이 되는 해당 코드 예제를 제공합니다. 1. 배열(Array) 배열은 기본 자료구조로, 같은 형태의 그룹

"Go 언어 프로그래밍 예제: 웹 개발의 코드 예제" 인터넷의 급속한 발전과 함께 웹 개발은 다양한 산업에서 없어서는 안 될 부분이 되었습니다. 강력한 기능과 뛰어난 성능을 갖춘 프로그래밍 언어인 Go 언어는 웹 개발 개발자들의 선호도가 점점 높아지고 있습니다. 이 기사에서는 특정 코드 예제를 통해 웹 개발에 Go 언어를 사용하는 방법을 소개하므로 독자는 Go 언어를 더 잘 이해하고 사용하여 자신의 웹 애플리케이션을 구축할 수 있습니다. 1. 간단한 HTTP 서버 먼저 시작해 보겠습니다.

PHP를 사용하여 재고 관리 시스템에서 재고 관리 기능 코드를 작성하는 방법 재고 관리는 많은 기업에서 없어서는 안될 부분입니다. 창고가 여러 개인 회사의 경우 재고 관리 기능이 특히 중요합니다. 재고를 적절하게 관리하고 추적함으로써 회사는 서로 다른 창고 간에 재고를 할당하고, 운영 비용을 최적화하며, 협업 효율성을 향상시킬 수 있습니다. 이 기사에서는 PHP를 사용하여 재고 창고 관리 기능을 위한 코드를 작성하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. 재고 창고 관리 기능에 대한 코드 작성을 시작하기 전에 데이터베이스를 구축하십시오.

Java 선택 정렬 방법 코드 작성 가이드 및 예제 선택 정렬은 정렬되지 않은 요소 중에서 가장 작은(또는 가장 큰) 요소를 매번 선택하고 모든 요소가 정렬될 때까지 교환하는 간단하고 직관적인 정렬 알고리즘입니다. 이 기사에서는 선택 정렬을 위한 코드 작성 가이드를 제공하고 특정 Java 샘플 코드를 첨부합니다. 알고리즘 원리 선택 정렬의 기본 원리는 정렬할 배열을 정렬된 부분과 정렬되지 않은 부분의 두 부분으로 나누는 것입니다. 매번 정렬되지 않은 부분에서 가장 작은(또는 가장 큰) 요소가 선택되어 정렬된 부분의 끝에 배치됩니다. 위의 내용을 반복하세요.

Huawei 클라우드 엣지 컴퓨팅 상호 연결 가이드: 인터페이스를 신속하게 구현하기 위한 Java 코드 샘플 IoT 기술의 급속한 발전과 엣지 컴퓨팅의 부상으로 점점 더 많은 기업이 엣지 컴퓨팅 애플리케이션에 관심을 갖기 시작했습니다. Huawei Cloud는 엣지 컴퓨팅 서비스를 제공하여 기업에 매우 안정적인 컴퓨팅 리소스와 편리한 개발 환경을 제공하여 엣지 컴퓨팅 애플리케이션을 보다 쉽게 구현할 수 있도록 합니다. 이 기사에서는 Java 코드를 통해 Huawei Cloud 엣지 컴퓨팅 인터페이스를 빠르게 구현하는 방법을 소개합니다. 먼저 개발 환경을 준비해야 합니다. Java Development Kit가 설치되어 있는지 확인하십시오(
