현재 위치 - 법률 상담 무료 플랫폼 - 특허 조회 - 돌연변이 리눅스
돌연변이 리눅스
Apache 서버란 무엇입니까?

아파치는 대부분의 컴퓨터 운영 체제에서 실행할 수 있는 오픈 소스 HTTP 서버입니다. 플랫폼 간 및 보안 (참고 1) 으로 인해 널리 사용되고 있으며 현재 가장 널리 사용되는 웹 서버측 소프트웨어 중 하나입니다. 빠르고 안정적이며 간단한 API 를 통해 확장할 수 있으며 Perl/Python 과 같은 인터프리터를 서버에 컴파일할 수 있습니다.

역사

길거리 건달

그것은 원래 일리노이 대학교 어바나 샴페인 분교의 국가 고급 컴퓨팅 프로그램 센터에서 개발한 것이다. 그 후로 아파치는

오픈 소스 커뮤니티의 구성원들은 끊임없이 성장하고 있다. 길거리 건달

서버는 이미 절반 이상의 인터넷 사이트, 특히 가장 인기 있고 방문이 가장 많은 사이트에서 사용되고 있는 안정적이고 신뢰할 수 있는 명성을 가지고 있습니다.

처음에는 Apache 가 넷스케이프 웹 서버 (현재 Sun) 에 불과했습니다

A) 오픈 소스 옵션. 점차적으로, 그것은 기능과 속도면에서 시작되었습니다. 다른 유닉스 기반 HTTP 서버를 능가하다. 아파치는 1996 년 4 월 이후

인터넷에서 가장 인기 있는 HTTP 서버: 1999 May 는 57% 의 웹 서버에서 실행됩니다. 2005 년 7 월까지 이 비율은 69% 로 상승했다.

저자는 처음에 이 이름을 선택한 것은 기억하기 쉽기 때문이라고 주장했지만, 가장 유행하는 설명은 1995 년 초에 아파치가 개발되었을 때의 사실에서 나온 것이라고 주장했다.

허우, 당시 가장 유행했던 HTTP 서버 NCSAHTTPd 1.3 의 코드로 수정되었기 때문에' 패치됨 (A)

단편화) "서버. 하지만 서버 공식 홈페이지의 FAQ 에서는' 아파치' 라는 이름이 아파치 (힌디어) 라는 미국 인디언을 기념하기 위한 것이라고 설명했다.

원주민들 중 한 명은 그들이 뛰어난 작전 전략과 끝없는 인내심을 가지고 있다는 것을 잘 알고 있다. "어쨌든 Apache2.x 분기에는 NCSA 코드가 포함되어 있지 않습니다.

특징

길거리 건달

많은 기능이 지원되는데, 대부분 컴파일 모듈을 통해 이루어진다. 이러한 기능에는 서버측 프로그래밍 언어 지원에서 인증 체계에 이르기까지 다양합니다. 일부 공용 언어 인터페이스는 Perl, Python, Tcl 을 지원합니다.

그리고 PHP 도 있습니다. 일반적인 인증 모듈에는 mod_access, mod_auth 및 mod_digest 가 포함됩니다. 다른 예로는 SSL 및 TLS 지원이 있습니다.

(mod_ssl), 프록시 모듈, 매우 유용한 URL 재작성 (mod_rewrite 를 통해 구현), 사용자 정의 로그 파일.

(mod_log_config) 및 필터링 지원 (mod_include 및.

Mod_ext_filter).Apache 로그는 웹 브라우저를 통해 무료 스크립트인 AWStats 또는 Visitors 를 사용하여 분석할 수 있습니다.

버전 2.x

Apache 의 버전 2.x 는 Apache 1.x 를 크게 개선했습니다. 여기에는 스레드, Windows 와 같은 비 UNIX 플랫폼에 대한 향상된 지원, 새로운 ApacheAPI 및 IPv6 지원이 포함됩니다.

평가

2004 년 8 월, PCMagazine》2004 는 10 지난 30 년 동안 최고의 소프트웨어 제품을 선정했습니다.

그들 중 몇몇은 가장 휘황찬란한 역사를 가지고 있거나 가장 창조적이다. 아파치에 대한 평가는 3 위: 아파치 (아파치, 1995 도입) 아파치가 현재 진화했다는 것이다.

Linux, Apache, MySQL, PHP 의 조합인 "램프" 로 바뀌었습니다. 이것은 마이크로소프트에 심각한 위협이 된 오픈 소스 소프트웨어 프로젝트이다. " 그물' 전략.

특히 Apache web server 는 사용자가 소스 소프트웨어 개발의 안정성, 안정성 및 사용자 정의를 충분히 경험할 수 있도록 합니다.

Apple.com 이 아파치를 평가했을 때,

아파치는 진화하는 서버 소프트웨어의 중요한 구성 요소입니다. 그것은 무료이지만 값진 것이다. 길거리 건달

그것은 자원 개방 운동의 절대적인 보물이다. 왜냐하면 그것은 개인 특허가 아니라 일반인에게 무료로 개방되기 때문이다. 일단 이 소스 코드를 갖게 되면 프로그래머들은 자신이 하고 싶은 일을 자유롭게 할 수 있다. 다른 프로그래머들이 인수할 때, 그들은 같은 일을 할 수 있다.

자신의 소스 코드를 변경하고 수정할 수있는 권한.

주다주석을 달다

새로운 허점이 계속 발견되기는 하지만 오픈 소스의 특성으로 인해 항상 빠르게 복구될 수 있습니다. 그래서 전반적으로, 그것의 안전은 여전히 상당히 높다.

() AddHandlercgi-script.cgi

AddHandlerserver-parsed.shtml

Sethandlercgi-스크립트

AddHandler 는 어떤 확장자를 어떤 문자열로 설명할지 정의합니다.

SetHandler 는 디렉토리의 모든 파일이 이 문자열로 설명되도록 지정합니다.

내가 여기서 언급한 명령은 그들의 구조와 밀접한 관련이 있다. 다음은 처리기와 유형 간의 관계에 대해 설명합니다. 많은 것들이 밖에서 잘 보이지 않는다. 다음으로, 우리는 내부에서 본다.

프로그램의 기본 구조

--

아파치는 매우 플랫폼에 걸쳐 있습니다. 이러한 목표를 달성하기 위해 모듈 작성자의 부담을 단순화하기 위해 Apache 는 특정 플랫폼과 독립적인 IO 및 메모리 할당과 같은 많은 기본 기능을 완성했습니다. Hashtable 과 Array 와 같은 유용한 루틴도 있습니다. 전체 시스템에서 Apache 는 가능한 한 간단한 구조와 알고리즘을 사용하여 쉽게 이해하고 유지 관리할 수 있을 뿐만 아니라 안정성을 높일 수 있는 기본점을 가지고 있습니다.

존재

UNIX 시스템에서는 Apache 가 다중 프로세스 모델을 채택하고 Window 에서는 다중 스레드 모델을 사용합니다. 복수 프로세스 모델에서 하위 프로세스는 고객 요청을 처리합니다.

상위 프로세스는 하위 프로세스를 관리하는 데 사용됩니다. 시스템이 과부하되면 상위 프로세스는 몇 개의 하위 프로세스를 더 시작하고, 시스템이 유휴 상태일 때는 상위 프로세스가 몇 개의 하위 프로세스를 죽입니다.

하위 프로세스 수는 "MinSpareServers" 와 "MaxSpareServers" 사이에 있습니다. 또한 하위 프로세스당 처리되는 요청 수도 제한되어 있습니다.

이렇게 하면 메모리 누수 등의 문제를 해결할 수 있다. 모든 프로세스 상태는 공유 메모리에 기록됩니다. 각 프로세스의 상태가 작은 메모리에 기록되기 때문에

일반적으로 이 메모리만 읽고 쓰므로 아파치는 동기화 메커니즘을 사용하지 않습니다.

Apache 는 RichardSteve 의 책에 언급된 여러 다중 프로세스 서버 모델을 사용하며, 해당 특성에 따라 시스템마다 다른 방법을 사용하도록 선택합니다.

1. 수락:

커널 수준에서 accept 를 구현하는 경우에만 accept 시 차단될 수 있습니다.

2. 다음을 선택합니다.

선택할 때 차단됩니다.

3.mutex/lock_file:

뮤텍스 또는 lock _ mutex 상호 배타적인 accpet 을 사용합니다.

셋;삼;3

두 방법 모두 봉쇄가 필요한데, 차이점은 봉쇄가 다르다는 것이다. 처음 두 가지 방법은 소위 거인 그룹 문제를 일으킬 수 있습니다. 즉, 동일한 자원에서 차단된 여러 프로세스가 동시에 깨어나면 재경쟁으로 이어질 수 있습니다.

그러나 RichardSteve 의 평가에 따르면 첫 번째 방법은 가장 빠르며 두 번째는 두 번째이고 세 번째는 가장 느리다. 사실, 세 번째 방법은 리눅스에도 거인 그룹 문제가 있을 것이다.

아파치는 성능을 강조하지 않지만, 그들이 성능을 중시하지 않는 것은 아니다. 대신 Apache 는 realiable 이 서버 측 1 위라고 생각하지만, Apache 의 성과는 여전히 좋다.

30 개의 요청 redis 와 30 개의 요청 데이터베이스 중 어느 것이 더 빠릅니까?

순수 메모리 데이터베이스, 단순한 키 값일 경우 메모리는 병목 현상이 아닙니다. 일반적으로 해시 조회는 초당 백만 번의 크기에 이를 수 있다. 병목 현상은 네트워크 IO 에 있습니다.

10000/s 의 측정에 따르면 클라이언트와 redis 는 서로 다른 두 시스템에 배포하여 redis 를 동시에 요청해야 합니다. 각 요청은 네트워크를 통해 redis 가 있는 시스템으로 전송된 다음 redis 가 데이터를 반환할 때까지 기다려야 합니다.

대부분의 시간을 인터넷 전송에 쓴다.

Redis 와 클라이언트를 같은 시스템에 배치하면 네트워크 지연이 줄어들어 일반적으로 시스템 성능에 따라 초당 6 만 회 이상을 칠 수 있습니다.

잠금은 성능에 영향을 미치는 주요 요인이 아닙니다.

스레드 잠금 (mutex_lock) 의 성능은 충돌이 발생할 때만 저하되지만 일반적으로 충돌이 발생할 가능성은 낮습니다.

단순한 잠금 및 잠금 해제일 경우 속도가 빠르며 초당 수천만 번은 문제가 없습니다.

Memcache 는 내부적으로 대량의 자물쇠를 사용했지만 성능 저하를 보지 못했다.

스레드는 처리량에 영향을 미치는 중요한 요소가 아닙니다.

첫 번째 요점은 일반적으로 프로그램이 메모리 데이터를 처리하는 속도가 네트워크 카드가 수신하는 속도보다 훨씬 빠르다는 것입니다.

스레드 사용의 장점은 여러 접속을 동시에 처리할 수 있으며 극단적인 경우 응답 속도가 향상될 수 있다는 것입니다.

Epoll, libevent 등을 사용합니다. 비동기 비 차단 입출력 프로그래밍은 이 작업을 수행 할 수 있기 때문입니다.

이에 상응하는 것은 동시에 차단 IO 프로그래밍을 차단하고, 다중 프로세스나 다중 스레드를 이용하여 Apache 와 같은 다중 접속 처리를 가능하게 하는 것이다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 도전명언)

일반적으로 비동기식 비차단 입출력 모델은 동기식 차단 입출력 모델보다 성능이 훨씬 뛰어나며 nginx 와 Apache 의 비교를 참조할 수 있습니다.

Libevent 는 redis 가 직접 구현한 ae_event 보다 느리지 않습니다. ae_event 는 redis 에 필요한 기능만 구현하고, libevent 는 더 빠른 타이머, bufferevent 모델, 자체 DNS 및 HTTP 와 같은 기능이 더 많기 때문입니다

Libevent 는 더 일반적이며 redis 는 Linux 플랫폼에만 집중합니다. 마지막으로, 가장 중요한 질문은 어디에 있습니까?

1, 메모리 전용 작업 2, 비동기 비차단 IO

Linux 에서 제공하는 신호량을 사용하여 프로세스의 상호 배제 및 동기화를 어떻게 실현할 수 있습니까?

뮤텍스의 초기 값을 1, 프로세스가 작업을 수행하기 전에 P (뮤텍스), 작업이 완료되면 V (뮤텍스) 로 설정합니다. P 연산은 상호 배타적인 경우 상호 배타적인 양을 1 으로 줄입니다

(광전지 운영에 대한 답변을 들어보신 적이 있습니다. 유용하다고 생각하십니까? ) 을 참조하십시오