>  기사  >  백엔드 개발  >  PHP의 높은 동시성 및 대규모 트래픽 문제를 해결하는 방법

PHP의 높은 동시성 및 대규모 트래픽 문제를 해결하는 방법

不言
不言원래의
2018-07-14 11:44:096300검색

이 글은 주로 PHP의 높은 동시성 및 대용량 트래픽 문제를 해결하는 방법을 소개합니다. 이제 모든 사람과 공유할 수 있습니다.

 TFS: 처리량(처리량은 단위 시간당 시스템에서 처리하는 요청 수를 의미) RT: 응답 시간(요청을 보낸 시점부터 응답 시간까지)

 동시성 수: 일정 시간 내에 동시에 사이트를 방문하는 사용자 수

QPS: 초당 쿼리 속도(초당 요청 수 또는 응답 수, 인터넷 분야에서는 초당 해당 요청 수(HTTP 요청))

PV: 페이지뷰 페이지뷰

 UV: 사용자뷰 사용자 방문수

일반적으로 일일 pv(방문수)가 1,000만 명 이상이면 동시성이 높다고 볼 수 있습니다

일일 웹 사이트 대역폭 = PV / 통계 시간(초) * 평균 페이지 크기(KB) * 8

스트레스 테스트

아파치 자체 스트레스 테스트 도구인 ab사용을 권장합니다. : apache 디렉토리를 입력하고 현재 디렉토리(windows)에서 실행:

ab.exe -n 总请求量 -c 并发请求量  http://请求地址

요청이 완료된 후 데이터를 얻을 수 있습니다:

Server Software:        Apache/2.4.18	服务器类型
Server Hostname:        eko.xiao.com    域名
Server Port:            80				端口

Document Path:          /index.html  	请求文件
Document Length:        529 bytes		文件大小

Concurrency Level:      100				并发数
Time taken for tests:   1.240 seconds	总响应时间
Complete requests:      1000			请求数
Failed requests:        0				失败次数
Total transferred:      800000 bytes	总共传输数据量
HTML transferred:       529000 bytes	
Requests per second:    806.41 [#/sec] (mean)	QPS(每秒查询率)
Time per request:       124.007 [ms] (mean)		平均响应时间
Time per request:       1.240 [ms] (mean, across all concurrent requests)
Transfer rate:          630.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.4      1      38
Processing:    42  114  34.2    103     204
Waiting:       41  113  33.9    102     204
Total:         43  115  34.5    104     207

Percentage of the requests served within a certain time (ms)
  50%    104
  66%    117
  75%    133
  80%    136
  90%    173
  95%    197
  98%    204
  99%    204
 100%    207 (longest request)  

Optimization

QPS가 증가함에 따라 다양한 최적화 조치가 필요합니다. 각 단계에서 최적화 솔루션은 하드웨어 및 네트워크 조건과도 관련이 있습니다

QPS가 50에 도달

최적화할 필요가 없습니다

QPS가 100에 도달합니다(데이터베이스 계층)

각 데이터베이스 쿼리가 0.01S이고 각 페이지가 SQL 쿼리가 하나만 있으면 이때 이미 데이터베이스 제한에 도달했습니다.

최적화 조치: 데이터베이스 캐시, 데이터베이스 로드 밸런싱, redis, memcache

QPS가 800(네트워크 대역폭)에 도달했습니다

각 페이지가 10K에 불과하다고 가정하면 800QPS에서 대역폭이 소진되었습니다

최적화 조치: CDN 가속 로드 밸런싱

QPS가 1000에 도달

최적화 조치: 정적 페이지

트래픽 최적화:

핫링크 방지 처리

프런트 엔드 최적화:

감소 HTTP 요청

비동기 요청 추가

브라우저 캐시 활성화

서버 최적화:

페이지 정적화

동시 처리

  대기열 처리

데이터베이스 최적화:

데이터베이스 캐싱

데이터베이스 하위 테이블, 파티션 작업

이상이 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트를 주목해주세요!

관련 권장사항:

php 전문가 공유: PHP 코드 작성 사양, 종합 요약

PHP 설치 및 아파치 통합 소개

위 내용은 PHP의 높은 동시성 및 대규모 트래픽 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.