고성능 웹 사이트 구축 (메모 1)
제3 장 서버 병행 처리 능력 여기 서 말 하 는 서버 는 Http 서 비 스 를 제공 하 는 서버 1, 삼투 율: 웹 서버 단위 시간 내 처리 요청 의 개 수 를 말 합 니 다.삼투 율 은 압력 테스트 를 통 해 얻 을 수 있 는데 삼투 율 의 전 제 는 다음 과 같은 조건 을 포함한다. 동시 다발 사용자 수, 요청 총수, 요청 자원 설명 이다. 동시 다발 사용자 총수: 어느 순간 서버 에 요청 한 사용자 수 를 동시에 보 내 는 것 을 말 합 니 다. 비교적 많은 변 수 를 포함 한 데이터 모델 에서 최적화 결 과 를 구 하 는 것 은 매우 어렵다. 서버 와 사용자 쌍방의 모순: 서버 는 높 은 병발 율 과 삼투 율 을 지원 하 기 를 원 하지만 사용 자 는 비교적 적은 시간 만 기다 리 기 를 원 하기 때문에 쌍방 이 모두 만족 할 수 없다. 웹 서버 실제 동시 다발 사용자 수 는 웹 서버 가 현재 유지 하고 있 는 서로 다른 사용 자 를 대표 하 는 파일 설명 수, 즉 동시 다발 연결 수 로 이해 할 수 있 습 니 다. 물론 사용자 가 요청 한 만큼 연결 을 만 드 는 것 이 아 닙 니 다. 웹 서버 는 일반적으로 동시 서비스의 최대 사용자 수 를 제한 합 니 다. 예 를 들 어 Apache 의 MaxClient 파라미터 와 같 기 때문에..때때로 실제 동시 다발 사용자 수 는 서버 가 유지 하 는 나 는 간 설명자 의 총수 보다 클 수 있 습 니 다. 이때 더 많은 사용자 요청 은 서버 커 널 의 데이터 수신 버퍼 에서 처 리 를 기다 리 고 있 습 니 다. 웹 서버 가 하 는 작업 의 본질은 가장 빠 른 속도 로 커 널 버퍼 에 있 는 사용자 가 요청 한 데 이 터 를 하나 도 남지 않 은 것 으로 가 져 온 다음 에 이 요청 을 최대한 빨리 처리 하고 커 널 유지보수 에 응 하 는 다른 데 이 터 를 데 이 터 를 보 내 는 버퍼 에 넣 고 다음 요청 을 계속 처리 하 는 것 입 니 다. 사용자 평균 요청 대기 시간: 서버 가 일정한 동시 다발 사용자 수 를 평가 하 는 상황 에서 단일 사용자 에 대한 서비스 품질 을 평가 하 는 데 사 용 됩 니 다. 서버 평균 요청 처리 시간: 사용자 가 서버 의 전체 서비스 품질 을 평가 하 는 것 은 삼투 율 의 역수 입 니 다.
Apache 의 ab 테스트: ab. exe 는 Apache 의 bin 디 렉 터 리 에 있 습 니 다. 명령 행 조작 C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab –n 100 –c 10 http://zzqrj.iteye.com/blog/570951 -n 100 은 요청 총 수 를 나타 내 고 - c 100 은 동시 다발 사용자 수 를 나타 낸다. 결과:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking zzqrj.iteye.com (be patient).....done
Server Software: lighttpd/1.4.20 /* Web */
Server Hostname: zzqrj.iteye.com /* URL */
Server Port: 80 /* */
Document Path: /blog/570951 /* URL */
Document Length: 2095 bytes /*Http */
Concurrency Level: 10 /* */
Time taken for tests: 41.563 seconds /* */
Complete requests: 100 /* */
Failed requests: 0
Write errors: 0
Total transferred: 235300 bytes /* , Http */
HTML transferred: 209500 bytes /* , Http */
Requests per second: 2.41 [#/sec] (mean)
/* , CPU Complete requests/ Time taken for tests */
Time per request: 4156.250 [ms] (mean)
/* Time taken for tests /( Complete requests/ Concurrency Level)*/
Time per request: 415.625 [ms] (mean, across all concurrent requests)
/* , Time taken for tests / Complete requests */
Transfer rate: 5.53 [Kbytes/sec] received /* */
Connection Times (ms)
min mean[+/-sd] median max
Connect: 328 405 414.2 344 3344
Processing: 344 3500 1311.0 3125 6125
Waiting: 344 2161 1424.1 2016 6109
Total: 688 3905 1357.3 3469 6484
Percentage of the requests served within a certain time (ms)
50% 3469
66% 3516
75% 3563
80% 6297
90% 6422
95% 6453
98% 6453
99% 6484
100% 6484 (longest request)
동시 다발 사용자 가 일정 수량 으로 늘 어 날 때 서버 의 평균 처리 시간 이 대폭 증가 하고 사용자 의 평균 요청 대기 시간 도 대폭 증가한다. 병발 전략의 디자인 은 서버 가 비교적 많은 요 구 를 동시에 처리 할 때 어떻게 CPU 계산 과 IO 조작 을 합 리 적 으로 조율 하고 충분히 이용 하여 비교적 큰 병발 사용자 수 상황 에서 비교적 높 은 삼투 율 을 제공 하 는 지 하 는 것 이다. 아파 치 prefork 모드 와 worker 모드: prefork 모드: 이러한 다 중 처리 모듈 (MPM) 은 비 스 레 드 형, 예비 파생 웹 서버 를 실현 합 니 다. 이 모드 는 요청 이 올 때 새로운 프로 세 스 를 만 들 지 않 아 도 시스템 비용 을 줄 여 성능 을 향상 시 킬 수 있 습 니 다.Prefork 는 여러 개의 키 프로 세 스 를 사용 합 니 다. 모든 프로 세 스 는 하나의 스 레 드 만 있 고 스 레 드 보안 라 이브 러 리 가 없 는 시스템 에 적합 합 니 다. worker 모드: 이 다 중 처리 모듈 (MPM) 은 네트워크 서버 가 혼 합 된 다 중 스 레 드 다 중 프로 세 스 를 지원 합 니 다.여러 개의 하위 프로 세 스 를 사용 합 니 다. 모든 하위 프로 세 스 는 여러 개의 스 레 드 가 있 습 니 다. 아파 치 conf \ extra \ httpd - mpm. conf 에 설정 되 어 있 습 니 다.2. CPU 병렬 계산 IO 의 속 도 는 CPU 의 속도 에 비해 늙 은 소의 산책 과 초음속 비행기 처럼 멀리 떨어져 있다. 프로 세 스: 모든 프로 세 스 는 독립 된 메모리 주소 공간 과 수명 주 기 를 가지 고 있 으 며, 모든 프로 세 스 는 CPU 레지스터 만 공유 할 수 있 습 니 다. 스 레 드: 컨 텍스트 전환: 모든 프로 세 스 가 시스템 자원 을 돌아 가면 서 사용 할 수 있 도록 프로 세 스 스케줄 러 는 필요 할 때 실행 중인 프로 세 스 를 걸 고 이전에 걸 었 던 프로 세 스 를 복원 합 니 다. 이러한 행 위 는 프로 세 스 전환 이 됩 니 다. 프로 세 스 가 걸 려 있 는 본질은 CPU 레지스터 에 있 는 데 이 터 를 꺼 내 커 널 스 택 에 임시 저장 하 는 것 입 니 다.
프로 세 스 복구 작업 의 본질은 CPU 레지스터 에 데 이 터 를 다시 불 러 오 는 것 이다. CPU 전환 (좋 은 예): 한 손 으로 원 을 그리고 한 손 으로 사각형 을 그 리 는 것 은 힘 들 고 머리 가 돌아 가지 않 으 며 그림 을 유창 하 게 그리 지 못 하기 때 문 입 니 다. 그림 을 그 리 는 데 는 두뇌 계산 이 필요 하기 때 문 입 니 다. 두 손 이 동시에 그림 을 그 릴 때 양쪽 이 유창 하 게 진행 되도록 '상하 문 전환' 을 빠르게 진행 하고 원형 과 사각형 을 그 리 는 규칙 을 뇌 에 계속 넣 고 옮 겨 야 합 니 다.시간 이 필요 해. 자물쇠 경쟁: 자 물 쇠 는 자원 이다. 잘 팔 리 는 자원 과 관련 되면 반드시 경쟁 이 존재 한다.우 리 는 보통 '잠 금' 체 제 를 사용 하여 자원 의 점용 을 제어 합 니 다. 한 작업 이 자원 을 점용 할 때 자원 을 잠 그 고 이때 다른 작업 은 잠 금 의 방출 을 기다 리 고 있 습 니 다.
3. 시스템 호출 프로 세 스 의 사용자 상태 와 커 널 상태: 프로 세 스 는 보통 사용자 상태 에서 실 행 됩 니 다. 이 때 는 CPU 와 메모리 로 작업 을 수행 할 수 있 습 니 다. 프로 세 스 가 하드웨어 외부 설정 을 조작 해 야 할 때 커 널 상태 로 전환 해 야 합 니 다.커 널 은 일련의 시스템 호출 을 제공한다. 사용자 상태 와 커 널 상태의 분 리 는 시스템 의 바 텀 안전성 을 향상 시 키 고 개발 모델 을 간소화 할 수 있다.시스템 호출 은 프로 세 스 가 사용자 상태 에서 커 널 상태 로 전환 하 는 것 과 관련 되 는데 이것 은 일정한 메모리 공간 교환 이 필요 하고 비용 이 많이 든다. 불필요 한 시스템 호출 을 줄 이 는 것 은 웹 서버 의 성능 최적화 에 도움 이 된다 (예 를 들 어 times 와 gettimeofday 호출 을 닫 는 것).4. 메모리 할당 Apache 는 다 중 프로 세 스 모드 로 메모리 풀 정책 을 기반 으로 한 메모리 관리 방안 을 사용 합 니 다. Lighttpd 는 단일 프로 세 스 모델 입 니 다. Nginx (Engine X) 는 단일 프로 세 스 모델 로 메모리 사용량 이 적다.Nginx 는 다 중 스 레 드 를 사용 하여 요청 을 처리 할 수 있 습 니 다. 이 는 여러 스 레 드 간 에 메모리 자원 을 공유 하여 메모리 의 전체 사용량 을 크게 줄 일 수 있 습 니 다.이것 은 단계별 메모리 분배 정책 을 사용 하여 필요 에 따라 분배 하고 방출 하 더 라 도 메모리 사용량 을 아주 작은 수량 범위 로 유지 합 니 다.
Lighttpd 와 Nginx 의 장점 은 주로 네트워크 IO 모델 에 나타난다. 메모리 할당 정책 의 디자인 은 웹 서버 의 병행 처리 능력 의 중요 한 보증 이다.5. 지속 접속 (Keep - Alive) 지속 적 인 연결: 긴 연결 은 TCP 통신 의 한 방식 으로 한 번 의 TCP 연결 에서 다 중 데 이 터 를 지속 적 으로 보 내 고 연결 을 계속 하 는 반면 짧 은 연결 입 니 다. HTTP 는 무상 태 입 니 다. TCP 긴 연결 에 의존 하지 않 습 니 다. 보통 TCP 연결 로 HTTP 요청 을 처리 합 니 다.긴 연결 을 만 들 려 면 웹 브 라 우 저 와 웹 서버 의 공동 작업 이 필요 합 니 다. 브 라 우 저 는 긴 연결 을 지원 합 니 다: 보 낸 요청 헤더 에 긴 연결 성명 을 포함 합 니 다. Connection: Keep - Alive. 웹 서버 는 긴 연결 을 지원 합 니 다: 아파 치 에서 conf \ extra \ httpd - default. conf 에 KeepAlive On 을 설정 하면 됩 니 다. 긴 연결 의 효과 적 인 사용 에 있어 서 관건 은 긴 연결 시간 초과 설정 에 있 습 니 다. 이 는 브 라 우 저 와 서버 가 공동으로 설정 하고 최소 자 를 기준 으로 해 야 합 니 다. 지속 적 인 연결 동 기 는 연결 횟수 를 최대한 줄 이 고 연결 통 로 를 최대한 재 활용 하 는 것 이다.6. 차단 과 비 차단 은 프로 세 스 가 접근 하 는 데이터 가 필요 하지 않 으 면 프로 세 스 가 기 다 려 야 하 는 지 를 말 합 니 다.차단 이란 현재 IO 작업 을 시작 하 는 프로 세 스 가 차단 되 는 것 을 말 합 니 다. CPU 가 차단 되 는 것 이 아니 라 CPU 는 필사적으로 계산 할 뿐 영원히 차단 되 지 않 습 니 다. 동기 화 와 비동기 화 는 데이터 에 접근 하 는 메커니즘 을 말한다. 동기 화 는 일반적으로 주동 적 으로 요청 하고 IO 작업 이 끝 날 때 까지 기다 리 는 방식 을 말한다. 데이터 가 준 비 된 후에 읽 고 쓸 때 반드시 막 아야 하고 비동기 화 는 주동 적 으로 데 이 터 를 요청 한 후에 다른 임 무 를 계속 처리 할 수 있다 는 것 을 말한다. 동시 다발 정책 의 목적 은 IO 작업 과 CPU 계산 을 가능 한 한 중첩 하여 진행 하 는 것 이다.
이 장 을 보고 저 에 게 보충 해 야 할 지식 을 불 러 일 으 켰 습 니 다. Http, TCP 프로 토 콜 은 깊이 이해 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 압축 및 압축 풀기파일 의 간단 한 압축 과 압축 해 제 를 실현 하 였 다.주요 테스트 용 에는 급 하 게 쓸 수 있 는 부분 이 있 으 니 불편 한 점 이 있 으 면 아낌없이 가르쳐 주 십시오. 1. 중국어 문 제 를 해 결 했 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.