1. 테스트 도구:
Apache 스트레스 테스트 도구 ab
ab는 ab 도구만 설치할 수 있는 성능 테스트 도구입니다.
Ubuntu 설치 ab
apt-get install apache2-utils
centos 설치 ab
yum install httpd-tools
ab 매개변수에 대한 자세한 설명
형식: ./ab [옵션] [ http://]호스트 이름[:port]/path
매개변수:
-n테스트 세션에서 실행된 요청 수입니다. 기본적으로 하나의 요청만 수행됩니다.
-c 한 번에 생성된 요청 수입니다. 기본값은 한 번에 하나씩입니다.
-t테스트가 실행되는 최대 시간(초)입니다. 내부 암시적 값은 -n 50000이며, 이는 서버 테스트를 고정된 총 시간으로 제한합니다. 기본적으로 시간 제한은 없습니다.
-p에는 게시해야 하는 데이터가 포함된 파일이 포함되어 있습니다.
-P는 대중교통 기관사에게 BASIC 인증 신뢰를 제공합니다. 사용자 이름과 비밀번호는 :로 구분되며 base64 인코딩으로 전송됩니다. 이 문자열은 서버에서 요구하는지 여부(즉, 401 인증 요구 사항 코드가 전송되었는지 여부)와 관계없이 전송됩니다.
-T POST 데이터에서 사용하는 콘텐츠 유형 헤더 정보입니다.
-v는 표시되는 정보의 자세한 정도를 설정합니다. 값이 4 이상이면 헤더 정보가 표시되고, 값이 3 이상이면 응답 코드(404, 200 등)가 표시되고, 값이 2 이상이면 응답 코드(404, 200 등)가 표시됩니다. 더 크면 경고 및 기타 정보가 표시될 수 있습니다.
-V 버전 번호를 표시하고 종료합니다.
-w는 결과를 HTML 테이블 형식으로 출력합니다. 기본적으로 흰색 배경에 2열 너비의 테이블입니다.
-GET 대신 HEAD 요청을 수행합니다.
-x는
속성의 문자열을 설정합니다. -C 요청 라인에 쿠키를 첨부합니다. 일반적인 형태는 이름=값의 매개변수 쌍이며 이 매개변수는 반복될 수 있습니다. -H는 요청에 추가 헤더 정보를 추가합니다. 이 매개변수의 일반적인 형식은 콜론으로 구분된 필드와 값 쌍(예: "Accept-Encoding:zip/zop;8bit")을 포함하는 유효한 헤더 라인입니다. -A는 서버에 BASIC 인증 신뢰를 제공합니다. 사용자 이름과 비밀번호는 :로 구분되며 base64 인코딩으로 전송됩니다. 이 문자열은 서버에서 요구하는지 여부(즉, 401 인증 요구 사항 코드가 전송되었는지 여부)와 관계없이 전송됩니다. -h는 사용법을 보여줍니다. -d "XX [ms] 테이블 내에 게재된 비율" 메시지를 표시하지 않습니다(이전 버전에 대한 지원 제공). -e는 해당 요청 비율(1%~100%)을 처리하는 데 필요한 시간 비율(마이크로초)을 포함하는 쉼표로 구분된(CSV) 파일을 생성합니다. 이 형식은 "이진화"되었기 때문에 'gnuplot' 형식보다 더 유용합니다. -g 모든 테스트 결과를 'gnuplot' 또는 TSV(탭으로 구분) 파일에 씁니다. 이 파일은 Gnuplot, IDL, Mathematica, Igor 및 Excel로 쉽게 가져올 수 있습니다. 첫 번째 줄은 제목입니다. -GET 대신 HEAD 요청을 수행합니다. -k는 하나의 HTTP 세션에서 여러 요청을 수행하는 HTTP KeepAlive 기능을 활성화합니다. 기본적으로 KeepAlive 기능은 활성화되어 있지 않습니다. -q 처리된 요청 수가 150개보다 큰 경우 ab는 약 10% 또는 100개의 요청을 처리할 때마다 stderr에 진행률 카운트를 출력합니다. -q 플래그는 이러한 메시지를 억제합니다. 예: ### POST /user/login ab -n 100 -kc 10 -p user_login -T 'application/json' -H 'Accept-Encoding:gzip, deflate' -H 'accept-language:zh-Hans-CN;q=1, en-CN;q=0.9' http://XXX/user/login ##### request data 文件 user_login 内容: {"email":"ws65536@qq.com","password":"ws65536"} ### GET /default/index ab -n 1000 -c 100 http://XXX/default/index 테스트하는 동안 테스트 중인 서버에서 htop 명령을 사용하여 실시간 CPU 및 메모리 사용량을 볼 수 있습니다. ab에 대한 자세한 내용은 ab 구성 최적화 사용에 대한 자세한 설명을 참조하세요.nginx에는 PHP 요청을 처리하는 세 단계가 있습니다. 1단계: 요청을 수락하고 PHP 요청인지 확인한 후 2단계로 이동합니다. 2단계: 소켓을 통해 PHP-FPM의 fast-cgi에 연결하고 PHP-FPM이 요청을 처리하도록 합니다. 3단계: PHP-FPM 처리 결과를 얻고 http 헤더를 추가한 후 클라이언트에 반환합니다. 따라서 nginx의 PHP 동시성 성능을 향상하려면 다음 세 단계를 수행해야 합니다. 1. nginx의 동시 연결 수를 늘립니다(nginx.conf에서 작업자_연결 및 작업자_프로세스 조정). worker_connections: 각 작업자 프로세스가 동시에 처리(시작)할 수 있는 최대 연결 수(모든 연결 수 포함) worker_processes: nginx가 열 프로세스 수를 지정합니다. 공식 성명에 따르면 일반적으로 하나를 여는 것으로 충분하며, 여러 개를 더 열면 머신 IO의 영향을 줄일 수 있습니다. 일반적으로 현재 시스템의 총 CPU 코어 수의 1~2배입니다. 참조: nginx 동시성 문제에 대한 생각: 작업자_연결, 작업자_프로세스 및 최대 클라이언트 Nginx 작동 원리, 최적화 및 허점 2.调大php-fpm的并发连接数(调php-fpm.conf 的pm.max_children等)。 本人用的是Ubuntu 14.04.4,PHP 5.5.9,以下目录结构对其他服务器环境可能不适用。 由于在 /etc/php5/fpm/php-fpm.conf 中并没有找到 max_children ,于是使用以下命令进行查找: # 在/etc/php5/fpm 目录下查找所有文件,并依次在每个文件中查找"max_children" sudo find /etc/php5/fpm -name * | xargs grep "max_children" 终于在 /etc/php5/fpm/pool.d/www.conf 中找到了 max_children 等相关配置。 关于具体配置,请参考以下内容: (PHP手册)FastCGI 进程管理器(FPM) php-fpm的配置和优化 PHP-FPM性能优化参考 PHP FPM php-fpm.conf设置详解 3.增加系统的最大文件数量限制(ulimit -n 65535)。 由于NGINX处理PHP请求的第二步需要通过socket的方式和PHP-FPM通信,它能新建的最大socket数受到系统最大打开文件数的限制。新装的Linux默认只有1024,所以必须增加系统最大打开文件数目。 ulimit -n 命令可以查看当前系统最大打开文件数。 ulimit -n 65535 可以将系统最大打开文件数临时修改为65535,然而退出登录后就会失效。 想要修改系统最大打开文件数,并永久生效: vi /etc/security/limits.conf # 添加如下的行 * soft noproc 11000 * hard noproc 11000 * soft nofile 65535 * hard nofile 65535 说明: * 代表针对所有用户 noproc 是代表最大进程数 nofile 是代表最大文件打开数 具体配置参考一下内容: ulimit -n 修改 linux有效修改max open files/ulimit -n |