Linux 相关优化

lvs 四层 dr 直接返回给用户
支持大并发 四层负载均衡 复杂 不能更改端口
lvs负载均衡 (大并发) NGINX 实现web动静分离 移动和pc分离
解决 WEB高并发

mysql优化参数调整
打开MySQL配置文件my.cnf
1 back_log参数值:由默认的50修改为500.(每个连接256kb,占用:125M)
back_log=500
值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。也就是说,如果MySql的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。将会报:unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时.
back_log值不能超过TCP/IP连接的侦听队列的大小。若超过则无效,查看当前系统的TCP/IP连接的侦听队列的大小命令:cat /proc/sys/net/ipv4/tcp_max_syn_backlog目前系统为1024。对于Linux系统推荐设置为小于512的整数。

修改系统内核参数,)
查看mysql 当前系统默认back_log值,命令:
show variables like ‘back_log‘; 查看当前数量
2 改wait_timeout参数值,由默认的8小时,修改为30分钟。(本次不用)
wait_timeout=1800(单位为妙)MySQL客户端的数据库连接闲置最大时间值
网站有大量的MySQL链接请求(每个MySQL连接都是要内存资源开销的 ),由于你的程序的原因有大量的连接请求空闲啥事也不干,白白占用内存资源,或者导致MySQL超过最大连接数从来无法新建连接导致“Too many connections”的错误
3修改max_connections参数值,由默认的151,修改为3000(750M)。
max_connections=3000
max_connections是指MySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值
4修改max_user_connections值,由默认的0,修改为800
max_user_connections=800 是指每个数据库用户的最大连接
5修改thread_concurrency值,由目前默认的8,修改为64
thread_concurrency=64
thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那thread_concurrency 的应该为4; 2个双核的cpu, thread_concurrency的值应为8
6default-storage-engine(设置MySQL的默认存储引擎)
default-storage-engine= InnoDB(设置InnoDB类型(支持实物类型),另外还可以设置MyISAM(读多写少建立引擎)
二 全局缓存
动MySQL时就要分配并且总是存在的全局缓存。目前有:key_buffer_size(默认值:402653184,即384M)、innodb_buffer_pool_size(默认值:134217728即:128M)、innodb_additional_mem_pool_size(默认值:8388608即:8M)、innodb_log_buffer_size(默认值:8388608即:8M)、query_cache_size(默认值:33554432即:32M)等五个。总共:560M.
这些变量值都可以通过命令如:show variables like ‘变量名‘;查看到。
三 局部缓存
read_buffer_size(默认值:2097144即2M)
read_buffer_size=4M是MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一

缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能.
sort_buffer_size,read_rnd_buffer_size,tmp_table_size 大小的内存空间. 不过它们只是在需要的时候才分配,并且在那些操作做完之后就释放了。有的是立刻分配成单独的组块。tmp_table_size 可能高达MySQL所能分配给这个操作的最大内存空间
四 其他缓存
thread_cache_size (服务器线程缓存)
table_cache(默认值:512)

#######################################################
NGINX优化
1 worker_processes 1;一般调整到与CPU的颗数相同
2 优化绑定不同的nginx进程到不同的CPU上
3 nginx事件处理模型优化
4 调整nginx单个进程允许的客户端最大连接数
参数语法:worker_connections number
默认配置:worker_connections 512
放置位置:events 标签  
events {
worker_connections 1024; #一个worker进程的并发
}
总并发= worker_processes* worker_connections
5 配置nginx worker进程最大打开文件数
参数语法:worker_rlimit_nofile number
放置位置:主标签段
说明:作用是改变worker processes能打开的最大文件数
worker_rlimit_nofile 65535;
这各参数受系统文件的最大打开数限制,解决方法:
[[email protected] nginx]# cat /proc/sys/fs/file-max
8192
文件系统最大可打开文件数
[[email protected] nginx]# ulimit -n
1024
程序限制只能打开1024个文件
使用# ulimit -n 8192调整一下
或者永久调整打开文件数 可在启动文件/etc/rc.d/rc.local末尾添加(在/etc/sysctl.conf末尾添加fs.file-max=xxx无效)
6 开启高效文件传输模式
设置参数 sendfile on;
sendfile参数用于开启文件的高效传输模式。同时将tcp_nopush和tcp_nodelay两个指令设置为on,可防止网络及磁盘i/o阻塞,提升nginx工作效率。
http {
  sendfile on; #放在http,server,location都可以
7 FastCGI相关参数调优
fastcgi_connect_timeout 240;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_temp_path /data/ngx_fcgi_tmp;
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
8 部署网站程序权限设置
目录:755
文件:644
所有者:root
cd /application/apache/html/
chown -R root.root blog
find ./blog/ -type f|xargs chmod 644
find ./blog/ -type d|xargs chmod 755
9. 控制Nginx并发连接数量
  ngx_http_limit_conn_module这个模块用于限制每个定义key值得连接数,特别是单个TP的连接数。
  不是所有的连接数都会被计算。一个符合计数要求的连接是整个请求头已经被读取的连接。
控制Nginx并发连接数量参数的说明
  1)limit_conn_zone参数:
    语法:limit_conn_zone key zone=name:size;
    上下文:http
    用于设置共享内存区域,key可以是字符串、Nginx自带变量或前两个组合。name为内存区域的名称,size为内存区域的大小。

  2)limit_conn参数
    语法:limit_conn zone number;
    上下文:http、server、location
    用于指定key设置最大连接数。当超时最大连接数时,服务器会返回503报错。

10. 控制客户端请求Nginx的速率
  ngx_http_limit_req_module模块用于限制每个IP访问每个定义key的请求速率。
limit_req_zone参数说明如下。
    语法:limit_req_zone key zone=name:size rate=rate;
    上下文:http
    用于设置共享内存区域,key可以是字符串,Nginx自带变量或前两个组合。name为内存区域的名称,size为内存区域的大小,rate为速率,单位为r/s,每秒一个请求。
  limit_req参数说明如下:
    语法:limit_req zone=name [burst-number] [nobelay]
    上下文:http、server、location
    这里运用了令牌桶原理,burst=num,一个有num快令牌,令牌发完后,多出来的那些请求就会返回503。
  nodelay默认在不超过burst值得前提下会排队等待处理,如果使用此参数,就会处理完num+1次请求,剩余的请求为超时,返回503。
###########################################################
修改Linux内核参数提高Nginx服务器在高的时候的性能
TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数量

vi /etc/sysctl.conf
  增加以下几行:
  引用
  net.ipv4.tcp_fin_timeout = 30
  net.ipv4.tcp_keepalive_time = 1200
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  net.ipv4.ip_local_port_range = 1024 65000
  net.ipv4.tcp_max_syn_backlog = 8192
  net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
  net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
  net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
  net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
更改linux内核参数后,立即生效的命令!
  /sbin/sysctl -p
Nginx优化
  使用FastCGI 缓存
  fastcgi_cache TEST
  开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误。
  fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
  keys_zone=TEST:10m
  inactive=5m;
  这个指令为FastCGI 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。

原文地址:https://www.cnblogs.com/zhanzhan/p/9085358.html

时间: 2024-11-08 20:27:33

Linux 相关优化的相关文章

Linux性能优化之磁盘优化(三)

前言 关于本章内容,设计的东西比较多.这里会有关于文件系统.磁盘.CPU等方面的知识,以及涉及到关于这方面的性能排查等. 术语 文件系统通过缓存和缓冲以及异步I/O等手段来缓和磁盘的延时对应用程序的影响.为了更详细的了解文件系统,以下就简单介绍一些相关术语: 文件系统:一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问.另外,一些表示设备.套接字和管道的特殊文件类型,以及包含文件访问时间戳的元数据. 文件系统缓存:主存(通常是DRAM) 的一块区域,用来缓存文

【系统知识点】linux基础&优化命令

Xshell上传下载服务器的文件: yum -y install lrzsz sysstat//安装对应软件 sz XXXX//下载 rz XXXX//上传 创建用户: Useradd vrfxie //创建用户 -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录. -g 用户组 指定用户所属的主用户组. -G 用户组,用户组 指定用户所属的附加组. -s Shell文件 指定用户的登录Shell. #可以设置为/sbin

[转]linux内核优化sysctl.conf参数优化

################### 所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了:) ############################### net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 ############################# 通过源路由,攻击者可以尝试到达内部IP地址 --包括RFC1918中的地址,所以 不接受源路由信息包可以防止你的内部网络被探测.

Linux 性能优化之 IO 子系统 系列 图

http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具. 本文的大部分内容来自 IBM Redbook - Linux Performance and Tuning Guidelines FileSystem VFS(Virtual FileSystem) 虚拟文件系统 文件系统是内核的功能,是

linux服务优化

服务控制命令格式 Service  服务名称 控制类型 服务控制命令: Start启动 Stop停止 Restart重启 Reload重载 Status查看状态 优化开机自动加载的服务   Linux系统每次开机后都会进入默认运行级别,并运行该级别中默认设为启动的各种系统服务.如要禁止某些系统服务自动运行,可以使用ntsysv或者chkconfig工具进行优化. ntsysv工具   [*]表示启动 []表示关闭 如果想要知道所选定服务的说明信息,按F1可以获取帮助. chkconfig工具 c

Apache的相关优化

Apache的相关优化 一.Apache运行环境优化 1.使用单独的主机运行Apache服务     Apache所运行的硬件环境都是对性能影响最大的因素,即使不能对硬件进行升级,也最好给apache一个单独的主机以免受到其他应用的干扰. 2.给Apache服务器增加内存 所有硬件指标中,对性能影响最大的是内存,对于静态内容(图片.javascript文件.css文件等),它决定了apache可以缓存多少内容,它缓存的内容越多,在硬盘上读取内容的机会就越少,而存取硬盘上的特定文件是一件很费时的操

Tomcat调优总结(Tomcat自身优化、Linux内核优化、JVM优化)

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置.首先是对这几个参数的含义要有深刻而清楚的理解.以tomcat8.5为例,讲解参数. 同时也得认识到一点,tomcat调优也受制于linux内核.linux内核对tcp连接也有几个参数可以调优. 因此我们可以将tomcat调优分为linux内核优化.java虚拟机调优和tomcat自身的优化. 一.Tomcat自身优化 1. maxThreads :tomcat创建的最大线程数,也就是同时处理的请求最大并发数.默认值

如何学习Linux性能优化?

如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的"拦路虎".在我看来,大多数人对性能问题"投降",原因可能只有两个. 一个是你没找到有效的方法学原理,一听到"系统"."底层"这

Linux基础优化与安全归纳总结

一名运维工程师在运维岗位上时间久了,就会发现Linux优化的重要性,同时会给运维工作带来很多的便利性.本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读Linux相关书籍及向同事.同行高手咨询,针对Linux系统的一些基本优化做了如下归纳总结,如有不足之处,还望大伙补充完善. 本文主要描述一些基本的系统优化知识点,并未涉及Linux深化优化,关于Linux的深化优化知识本人后期会更新. 第一点:Linux的管理尽量不用root用户,利用sudo命令来控制普通用户对系统的管理 新建一个用户,