PHP 7 오픈 OPcache 와 Swoole 성능 향상 대비

5234 단어 phpopcacheswoole
전기 준비
테스트 에 사 용 된 호스트 는 가상 컴퓨터 이 며,가상 컴퓨터 는 쌍 핵 4GB 의 개인 용 컴퓨터 에 설정 되 어 있다.가상 컴퓨터 시스템 은 linux 이 고 http 서버 는 nginx 를 사용 하 며 lnmp 스 크 립 트 로 nginx,mysql,php 를 설치 합 니 다.Laravel 프레임 워 크 는 7.X 버 전 입 니 다.
사이트 설정,nginx 의 server 블록 에 가상 호스트 설정
server{ listen 80; root "/vagrant/www/laravel7/public"; server_name test.laravel.com; index index.html index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
/etc/hosts 파일 을 편집 하고 새 줄 에 127.0.0.1 test.laravel.com 을 추가 합 니 다.
항목 을 열 고 새 컨트롤 러 TestController 를 만 듭 니 다.안에 test 방법 을 만 듭 니 다.

<?php
namespace App\Http\Controllers;
 
 
 
class TestController extends Controller
{
    public function test()
    {
    	return 123;
    }
 
    
}
routes/api.php 에 경로 등록:

Route::get('test', 'TestController@test');
app/Http/Kernel 파일 에서 주파수 제한 미들웨어 throttle 을 끄 십시오.
opcache 와 laravel 을 열지 않 습 니 다.
php-fpm.conf 파일 수정,pm 와 pm.max 수정children 설정,pm 는 static,pm.max 로 설정children 을 50 으로 설정 하여 비교적 좋 은 병행 성능 을 얻 습 니 다.
[www] listen = /tmp/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = static pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 10 pm.max_spare_servers = 20 request_terminate_timeout = 100 request_slowlog_timeout = 0 slowlog = var/log/slow.log
fpm 재 부팅 후 ab 압력 측정:ab-n 1000-c 100http://test.laravel.com/api/test
Server Software:        nginx
Server Hostname:        test.laravel.com
Server Port:            80
Document Path:          /api/test
Document Length:        3 bytes
Concurrency Level:      100
Time taken for tests:   148.306 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      253000 bytes
HTML transferred:       3000 bytes
Requests per second:    6.74 [#/sec] (mean)
Time per request:       14830.553 [ms] (mean)
Time per request:       148.306 [ms] (mean, across all concurrent requests)
Transfer rate:          1.67 [Kbytes/sec] received
이때 의 병발 은 대략 7 qps 이다.
OPcache 열기
설정 파일 php.ini 파일 에서 opcache 열기
zend_extension="opcache.so" opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8
fpm 재 부팅 후 ab 압력 측정:ab-n 1000-c 100http://test.laravel.com/api/test
Server Software:        nginx
Server Hostname:        test.laravel.com
Server Port:            80
Document Path:          /api/test
Document Length:        4 bytes
Concurrency Level:      100
Time taken for tests:   11.006 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      254000 bytes
HTML transferred:       4000 bytes
Requests per second:    90.86 [#/sec] (mean)
Time per request:       1100.590 [ms] (mean)
Time per request:       11.006 [ms] (mean, across all concurrent requests)
Transfer rate:          22.54 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   4.3      0      16
Processing:   409 1069 152.0   1092    1414
Waiting:      408 1069 152.0   1092    1414
Total:        424 1070 149.6   1092    1414
Percentage of the requests served within a certain time (ms)
  50%   1092
  66%   1126
  75%   1149
  80%   1162
  90%   1203
  95%   1242
  98%   1280
  99%   1309
 100%   1414 (longest request)
이때 90qps 에 달 했 습 니 다.성능 은 오픈 하지 않 았 을 때의 10 배 이상 입 니 다!
swoole 가속 팩 사용
오픈 소스 의 laravel-swoole 가속 팩
프로젝트 디 렉 터 리 에서 coposer 명령 설 치 를 실행 합 니 다.nginx 설정 파일 에 swoole 감청 포트 로 전송 을 요청 합 니 다.
ab 압력 측정:ab-n 1000-c 100http://test.laravel.com/api/test
Server Software:        nginx
Server Hostname:        test.laravel.com
Server Port:            80
Document Path:          /api/test
Document Length:        4 bytes
Concurrency Level:      100
Time taken for tests:   1.158 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      225000 bytes
HTML transferred:       4000 bytes
Requests per second:    863.46 [#/sec] (mean)
Time per request:       115.813 [ms] (mean)
Time per request:       1.158 [ms] (mean, across all concurrent requests)
Transfer rate:          189.72 [Kbytes/sec] received
속도 이륙!800 qps 달성!
100 배 넘 는 거 야?
총결산
물론 이것 은 비교적 간단 한 테스트 일 뿐 이지 만 전체적으로 말하자면 opcache 확장 과 swoole 확장 은 php 스 크 립 트 의 성능 향상 에 뚜렷 하 다.
이상 은 PHP 7 오픈 OPcache 와 Swoole 성능 향상 대비 에 대한 상세 한 내용 입 니 다.더 많은 PHP 7 오픈 OPcache 와 Swoole 성능 향상 대비 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 시기 바 랍 니 다!

좋은 웹페이지 즐겨찾기