zgdy 发表于 2018-11-11 14:21:31

安装部署LNMP/大并发nginx优化/php性能加速 实战

  安装部署LNMP及Nginx优化、PHP加速进行压力测试
  部署LNMP环境:
  主机
  IP
  主机名
  Centos7.2
  192.168.5.128
  www.benet.com
  部署步骤如下:
  使用yum仓库安装Nginx依赖包

  yum -y installgcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel
  创建Nginx用户 组解压Nginx软件包

  编译安装Nginx

  ./configure --prefix=/usr/local/nginx1.10 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx && make &&make install
  修改配置文件 全部配置文件内容如下:
  user nginx nginx;
  worker_processes4;
  worker_cpu_affinity 0001 0010 0100 1000;
  error_loglogs/error.log;
  #error_loglogs/error.lognotice;
  #error_loglogs/error.loginfo;
  pid      logs/nginx.pid;
  events {
  use epoll;
  worker_connections65535;
  multi_accept on;
  }
  http {
  include       mime.types;
  default_typeapplication/octet-stream;
  #log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
  #                  '$status $body_bytes_sent "$http_referer" '
  #                  '"$http_user_agent" "$http_x_forwarded_for"';
  #access_loglogs/access.logmain;
  sendfile      on;
  tcp_nopush   on;
  keepalive_timeout65;
  tcp_nodelay on;
  client_header_buffer_size 4k;
  open_file_cache max=102400 inactive=20s;
  open_file_cache_valid 30s;
  open_file_cache_min_uses 1;
  client_header_timeout 15;
  client_body_timeout 15;
  reset_timedout_connection on;
  send_timeout 15;
  server_tokens off;
  client_max_body_size 10m;
  fastcgi_connect_timeout   600;
  fastcgi_send_timeout 600;
  fastcgi_read_timeout 600;
  fastcgi_buffer_size 64k;
  fastcgi_buffers   4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  fastcgi_temp_path /usr/local/nginx1.10/nginx_tmp;
  fastcgi_intercept_errors on;
  fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128m inactive=1d max_size=10g;
  gzip on;
  gzip_min_length2k;
  gzip_buffers   4 32k;
  gzip_http_version 1.1;
  gzip_comp_level 6;
  gzip_typestext/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary on;
  gzip_proxied any;
  server {
  listen       80;
  server_namewww.benet.com;
  #charset koi8-r;
  #access_loglogs/host.access.logmain;
  location ~* ^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
  valid_referers none blockedwww.benet.com benet.com;
  if ($invalid_referer) {
  #return 302http://www.benet.com/img/nolink.jpg;
  return 404;
  break;
  }
  access_log off;
  }
  location / {
  root   html;
  indexindex.php index.html index.htm;
  }
  location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {
  expires 30d;
  #log_not_found off;
  access_log off;
  }
  location ~* \.(js|css)$ {
  expires 7d;
  log_not_found off;
  access_log off;
  }
  location = /(favicon.ico|roboots.txt) {
  access_log off;
  log_not_found off;
  }
  location /status {
  stub_status on;
  }
  location ~ .*\.(php|php5)?$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
  #          fastcgi_cache cache_fastcgi;
  fastcgi_cache_valid 200 302 1h;
  fastcgi_cache_valid 301 1d;
  fastcgi_cache_valid any 1m;
  fastcgi_cache_min_uses 1;
  fastcgi_cache_use_stale error timeout invalid_header http_500;
  fastcgi_cache_key http://$host$request_uri;
  }
  #error_page404            /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  }
  建立一个软连接 启动Nginx服务 查看端口号是否开启

  测试能不能访问到测试页

  二进制安装mysql--解压mysql二进制包并且创建用户mysql

  删除centos7中带的数据库避免发生冲突

  编写配置/etc/my.cnf文件

  创建下面的数据文件和log日志文件

  添加权限给data文件 并且授予mysql文件为属主属组 创建软连接

  初始化mysql

  bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
  查看log日志中生成的密码 下面登录时会用到

  复制启动文件到/etc/init.d/下

  登录mysql数据库

  使用yum安装php依赖包

  需要的安装包例如:

  编译安装libmcrypt

  编译安装PHP软件包

  复制PHP配置文件及设置自启动PHP

  修改PHP配置文件

  修改/usr/local/php5.6/etc/php.fpm.conf下面几项
  pid = run/php-fpm.pid
  listen = 0.0.0.0:9000
  pm.max_children =300
  pm.start_servers =20
  pm.min_spare_servers = 20
  pm.max_spare_servers = 100
  启动PHP服务

  设置防火墙允许9000端口经过

  创建PHP测试页

  测试是否能访问php页面

  测试防盗链 首先在被盗主机上的网页确保有图片 比如:

  然后设置域名www.benet.com
  设置另一台主机为www.test.com
  并且编写盗网页的编码

  访问网页看是否能盗 因为在被盗主机www.benet.com中设置了防盗链 这时不能盗

  点击链接lianjie查看测试成功是否

  测试为成功 防盗链起效
  使用yum安装httpd-tools包进行压力测试

  测试压力 能够承受多大的压力
  ab -c 600 -n 60000 http://192.168.5.128/index.html
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking 192.168.5.128 (be patient)
  Completed 6000 requests
  Completed 12000 requests
  Completed 18000 requests
  Completed 24000 requests
  Completed 30000 requests
  Completed 36000 requests
  Completed 42000 requests
  Completed 48000 requests
  Completed 54000 requests
  Completed 60000 requests
  Finished 60000 requests
  Server Software:      nginx
  Server Hostname:      192.168.5.128
  Server Port:            80
  Document Path:          /index.html
  Document Length:      632 bytes
  Concurrency Level:      600
  Time taken for tests:   6.787 seconds
  Complete requests:      60000
  Failed requests:      0
  Write errors:         0
  Total transferred:      51480000 bytes
  HTML transferred:       37920000 bytes
  Requests per second:    8841.04 [#/sec] (mean)
  Time per request:       67.865 (mean)
  Time per request:       0.113 (mean, across all concurrent requests)
  Transfer rate:          7407.83 received
  Connection Times (ms)
  minmean[+/-sd] median   max
  Connect:      0   3048.6   28    1039
  Processing:   7   37   8.2   36      73
  Waiting:      1   28   8.5   27      61
  Total:         46   6749.3   65    1073
  Percentage of the requests served within a certain time (ms)
  50%   65
  66%   68
  75%   71
  80%   72
  90%   76
  95%   79
  98%   82
  99%   86
  100%   1073 (longest request)
  进行第二次测试 查看变化情况
  # ab -c 600 -n 60000 http://192.168.5.128/index.html
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking 192.168.5.128 (be patient)
  Completed 6000 requests
  Completed 12000 requests
  Completed 18000 requests
  Completed 24000 requests
  Completed 30000 requests
  Completed 36000 requests
  Completed 42000 requests
  Completed 48000 requests
  Completed 54000 requests
  Completed 60000 requests
  Finished 60000 requests
  Server Software:      nginx
  Server Hostname:      192.168.5.128
  Server Port:            80
  Document Path:          /index.html
  Document Length:      632 bytes
  Concurrency Level:      600
  Time taken for tests:   6.640 seconds
  Complete requests:      60000
  Failed requests:      0
  Write errors:         0
  Total transferred:      51480000 bytes
  HTML transferred:       37920000 bytes
  Requests per second:    9035.60 [#/sec] (mean) ##此值越大代表带宽浪费的越少
  Time per request:       66.404 (mean)
  Time per request:       0.111 (mean, across all concurrent requests)
  Transfer rate:          7570.85 received
  Connection Times (ms)
  minmean[+/-sd] median   max
  Connect:      0   2924.1   28    1030
  Processing:   8   37   7.9   37   254
  Waiting:      5   28   8.5   28   238
  Total:         37   6624.7   64    1074
  Percentage of the requests served within a certain time (ms)
  50%   64
  66%   68
  75%   70
  80%   72
  90%   76
  95%   79
  98%   83
  99%   85
  100%   1074 (longest request)
  编译安装xcache加速PHP


  ./configure --enable-xcache --enable-xcache-coverager --enable-xcache-optimizer --with-php-config=/usr/local/php5.6/bin/php-config &&make &&make install
  编译安装完(就在编译安装后的最后一行)后要记住下面黄色字体

  创建xcache缓存文件 把后台管理程序存放到网站根目录下 添加配置文件php.ini

  在/etc/php.ini的最后面添加就可以

  重启php.ini服务
  测试能否打开xcache

  进行php动态网页做压力测试
  ab -c 1000 -n 100000 http://192.168.5.128/index.html
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking 192.168.5.128 (be patient)
  Completed 10000 requests
  Completed 20000 requests
  Completed 30000 requests
  Completed 40000 requests
  Completed 50000 requests
  Completed 60000 requests
  Completed 70000 requests
  Completed 80000 requests
  Completed 90000 requests
  Completed 100000 requests
  Finished 100000 requests
  Server Software:      nginx
  Server Hostname:      192.168.5.128
  Server Port:            80
  Document Path:          /index.html
  Document Length:      632 bytes
  Concurrency Level:      1000
  Time taken for tests:   10.658 seconds
  Complete requests:      100000
  Failed requests:      0
  Write errors:         0
  Total transferred:      85800000 bytes
  HTML transferred:       63200000 bytes
  Requests per second:    9383.02 [#/sec] (mean)
  Time per request:       106.576 (mean)
  Time per request:       0.107 (mean, across all concurrent requests)
  Transfer rate:          7861.94 received
  Connection Times (ms)
  minmean[+/-sd] median   max
  Connect:      4   53 109.1   42    1062
  Processing:    11   5315.4   54   216
  Waiting:      1   4014.5   39   210
  Total:         26105 110.8   99    1133
  Percentage of the requests served within a certain time (ms)
  50%   99
  66%    103
  75%    106
  80%    108
  90%    113
  95%    117
  98%    124
  99%   1062
  100%   1133 (longest request)

页: [1]
查看完整版本: 安装部署LNMP/大并发nginx优化/php性能加速 实战