22.1、编译安装nginx:

1、下载nginx:

[root@slave-node1 ~]# mkdir -p /tools/

[root@slave-node1 ~]# cd /tools/

[root@slave-node1 tools]# wget http://nginx.org/download/nginx-1.16.0.tar.gz

2、安装:

[root@slave-node1 tools]# yum install openssl openssl-devel gcc pcre pcre-devel -y

[root@slave-node1 tools]# useradd -M -s /sbin/nologin nginx

[root@slave-node1 tools]# tar -xzf nginx-1.16.0.tar.gz

[root@slave-node1 tools]# cd nginx-1.16.0/

[root@slave-node1 nginx-1.16.0]# ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.16.0

[root@slave-node1 nginx-1.16.0]# make && make install

[root@slave-node1 nginx-1.16.0]# ln -s /application/nginx-1.16.0/ /application/nginx

3、启动nginx:

[root@slave-node1 nginx-1.16.0]# cd /application/

[root@slave-node1 application]# nginx/sbin/nginx

#nginx/sbin/nginx -s reload:重启nginx

#nginx/sbin/nginx -s stop:关闭nginx

[root@slave-node1 application]# netstat -tunlp | grep 80

4、访问验证:

http://172.16.1.91

22.2、nginx性能优化:

1、性能优化概述:

在做性能优化前, 我们需要对如下进行考虑:

(1)当前系统结构瓶颈:

观察指标

压力测试

(2)了解业务模式:

接口业务类型

系统层次化结构

(3)性能与安全:

性能好安全弱

安全好性能低

2、影响性能的指标:

影响性能方便整体关注

(1)网络:

网络的流量

网络是否丢包

这些会影响http的请求与调用

(2)系统:

硬件有没有磁盘损坏,磁盘速率

系统负载、内存、系统稳定性

(3)服务:

连接优化、请求优化

根据业务形态做对应的服务设置

(4)程序

接口性能

处理速度

程序执行效率

(5)数据库

每个架构服务与服务之间都或多或少有一些关联, 我们需要将整个架构进行分层, 找到对应系统或服务的短板, 然后进行优化。

3、压力测试工具:

(1)安装压力测试工具ab:

[root@slave-node1 application]# yum install httpd-tools -y

(2)使用ab工具进行压测:

[root@slave-node1 application]# ab -n 2000 -c 2 http://172.16.1.91/index.html

# -n:表示总的请求数;-c:表示并发请求数;-k:是否开启长连接

主要关注的参数如下:

Time taken for tests:总花费总时长

Complete requests:总请求数

Failed requests:请求失败数

Requests per second:每秒多少请求/s(总请求出/总共完成的时间)

Time per request:客户端访问服务端, 单个请求所需花费的时间

Time per request:服务端处理单个请求所花的时间

Transfer rate:判断网络传输速率,观察网络是否存在瓶颈

4、系统性能优化:

(1)文件句柄:

1)Linux一切皆文件,文件句柄可以理解为就是一个索引;

文件句柄会随着我们进程的调用频繁增加;

系统默认对文件句柄有限制,不能让一个进程无限的调用;

需要限制每个进程和每个服务使用多大的文件句柄;

文件句柄是必须要调整的优化参数。

2)调整文件描述符大小:

echo '* - nofile 65535' >>/etc/security/limits.conf

ulimit -SHn 65535

ulimit -n

(2)内核参数设置:

1)配置内核参数:

cat >>/etc/sysctl.conf<<EOF

net.ipv4.tcp_tw_reuse = 1

net.ipv4.ip_local_port_range = 1024 65535

EOF

说明:

net.ipv4.tcp_tw_reuse = 1

# 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。

net.ipv4.ip_local_port_range = 1024 65535

#指定外部连接的端口范围。默认值为32768 61000

2)生效配置的内核参数:

sysctl -p

5、nginx性能优化:

CPU亲和, 减少进程之间不断频繁迁移, 减少性能损耗。

(1)查看当前cpu的状态:

[root@slave-node1 ~]# lscpu |grep "CPU(s)"

#一颗物理cpu,每颗2核心,总共2核心。

(2)将nginx worker进程绑定到不同的核心上:

启动多少worker进程, 官方建议和cpu核心一致。

1)第一种绑定组合方式:

worker_processes 2;

worker_cpu_affinity 01 10;

# 表示:两核cpu开启2个进程,01表示启用第一个cpu内核,10表示启用第二个cpu内核。

2)第二种方式(最佳方式绑定方式):

worker_processes auto;

worker_cpu_affinity auto;

(3)查看nginx worker进程绑定对应的cpu:

[root@slave-node1 ~]# ps -eo pid,args,psr|grep [n]ginx

6、nginx通用优化配置文件:

(1)配置文件:

[root@slave-node1 application]# cat nginx/conf/nginx.conf

user nginx;

# worker进程的数量

worker_processes auto;

# 绑定Nginx的worker进程到指定的CPU内核

worker_cpu_affinity auto;

error_log logs/error.log warn;

pid logs/nginx.pid;

# worker进程可以打开的最大句柄描述符个数

# 调整至1w以上,负荷较高建议2-3w以上

worker_rlimit_nofile 65535;

events {

use epoll;

# 每个worker进程的最大连接数

# worker_processes乘以worker_connections等于nginx总体最大连接数

worker_connections 10240;

}

http {

include mime.types;

default_type application/octet-stream;

# 统一使用utf-8字符集

charset utf-8;

log_format main '$remote_addr - $remote_user [$time_local] "$request"'

'$status $body_bytes_sent "$http_referer"'

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

# Core module

sendfile on;

# 静态资源服务器建议打开

tcp_nopush on;

# 动态资源服务建议打开,需要打开keepalived

tcp_nodelay on;

keepalive_timeout 65;

# Gzip module

gzip on;

gzip_disable "MSIE [1-6]\.";

gzip_http_version 1.1;

# Virtal Server

include conf.d/*.conf;

}

(2)创建配置文件目录:

[root@slave-node1 application]# mkdir -p nginx/conf/conf.d/

(3)测试 test.conf 文件:

[root@slave-node1 application]# vim nginx/conf/conf.d/test.conf

server {

listen 0.0.0.0:80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

}

(4)验证配置文件:

[root@slave-node1 application]# nginx/sbin/nginx -t

(5)重启nginx:

[root@slave-node1 application]# nginx/sbin/nginx -s reload

(6)访问:

http:172.16.1.91

22、编译安装nginx及性能优化的更多相关文章

  1. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  2. Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.3 + Openssl 1.1.0h + Mariadb 10.3.7 + Nginx 1.14.0 + Asp.net. Core 2 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  3. 源码编译安装nginx

    安装依赖软件 1.安装编译工具gcc gcc是一个开源编译器集合,用于处理各种各样的语言:C.C++.Java.Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86.AMD64.Pow ...

  4. 初识Nginx及编译安装Nginx

    初识Nginx及编译安装Nginx 环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...

  5. Nginx配置性能优化与压力测试webbench【转】

    这一篇我们来说Nginx配置性能优化与压力测试webbench. 基本的 (优化过的)配置 我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.你应该能够在服务器的/et ...

  6. CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached

    声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载. LNMP+Memcached CentOS是红帽发行的免费的稳定Linux ...

  7. Ubuntu编译安装nginx,php,mysql

    摘要: 整理的Ubuntu编译安装nginx,php,mysql的步骤,主要来自对驻云的sh-1.4.1中脚本的整理,随时代进步,内容中的软件或者命令请自行更新 目录准备 创建用户 userdel w ...

  8. Centos7 编译安装 Nginx、MariaDB、PHP

    前言 本文主要大致介绍CentOS 7下编译安装Nginx.MariaDB.PHP.面向有Linux基础且爱好钻研的朋友.技艺不精,疏漏再所难免,还望指正. 环境简介: 系统: CentOS 7,最小 ...

  9. Windows 编译安装 nginx 服务器 + rtmp 模块

    有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...

随机推荐

  1. Deepin/Uos系统更新源失败。提示:E: 仓库 “http://packages.chinauos.cn/uos eagle

    Deepin/Uos系统更新源失败.提示:E: 仓库 "http://packages.chinauos.cn/uos eagle InRelease" 没有数字签名 起因是在Uo ...

  2. 寻找CPU使用率高的进程方法

    寻找CPU使用率高的进程方法 发布时间:  2017-07-13 浏览次数:  1362 下载次数:  0 问题描述 节点报CPU使用率高,甚至出现"ALM-12016 CPU使用率超过阈值 ...

  3. ssh安全优化免密登陆

    ssh协议 为什么使用ssh协议? 在进行传输时,会对数据进行加密,保证会话安全:telnet协议不是加密传输,在传输过程中如果被抓包,就会造成信息泄露,telnet默认不支持root远程. # 常用 ...

  4. python中的threading模块使用说明

    这段时间使用python做串口的底层库,用到了多线程,对这部分做一下总结.实际用完了后再回过头去看python的官方帮助文档,感觉受益匪浅,把里面的自己觉得有用的一些关键点翻译出来,留待后续查验.th ...

  5. C/C++ 复习

    本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, ne ...

  6. STM32程序的启动

    普及: 不同位置启动首需要硬件上的配合:BOOT1与BOOT0 引脚电平配合,一般默认使用主闪存存储: 也就是BOOT0 = 0; 启动时将现在起始模式的初始地址映射到了0x0000 0000,内部S ...

  7. win7 32位系统 安装node.js最新版本遇到的问题

    win7   32位是安装不了10.0以上版本的node.js的 ,因为10.0以上版本的node.js已经不对win7 32位的电脑进行维护更新了,如果你的电脑是win7 32位系统的话,只能下载安 ...

  8. 我的Java资料小栈-START

    我的Java资料小栈 前言 在学习Java的这一路中,其实说句实话,自己还是看了很多培训结构出的Java资料,有时候个人觉得培训结构有的东西还是讲的比较通俗易懂的,又想着有些最新的或者个人有时候需要及 ...

  9. 网络模型mAP计算实现代码

    网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...

  10. nvGRAPH API参考分析(二)

    nvGRAPH API参考分析(二) nvGRAPH Code Examples 本文提供了简单的示例. 1. nvGRAPH convert topology example void check( ...