面试题-Linux优化一些服务优化

news/2024/7/3 0:49:06

Linux系统优化

1、不使用root用户,添加普通用户,然后通过sudo授权管理

2、我们可以修改默认的远程连接ssh服务的端口,以及禁止root用户远程连接

3、定时自动更新服务器时间,配置国内的yum源

4、修改磁盘阵列

        对于写操作频繁而且对数据安全性要求不高时,可以把磁盘做成raid0

        对于数据安全性较高,对读写没有特别要求的,做成raid1

        对于读操作要求高,对写操作无特殊要求,并保证数据安全性的,做成raid5

        对于读写操作要求都很高,而且对数据安全性的要求也很高,做成raid10   raid01

        

修改磁盘阵列

添加四块硬盘,先安装mdadm软件,我们先使用fdisk -l 查看分区情况,可以看到四块磁盘sdb sdc sdd sde.  我们给每块磁盘创建分区,修改分区类型,使用fdisk /dev/sdb 创建主分区,回车默认即可,然后输入t修改分区类型,l可以列出代码,我们输入fd选择raid自动,w保存退出即可,四个磁盘都这样的操作即可。验证一下磁盘是否已经做raid,然后我们开始创建raid,mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1,创建raid名为md0,-l5 使用的raid级别是raid5,-x1 是备份磁盘sde,然后就做好了raid5

mdadm -D /dev/md0查看raid磁盘详细信息  -S 停止RAID  -A 启动RAID

 

5、修改swap的大小

       swap交换分区,当内存不足时可以交换出去一部分,但是swap交换时会触发高io,同时会降低系统的性能,所以我们进行优化。

        如果物理内存比较小,一般设置swap交换分区大小为内存的2倍。如果物理内存大小大于8GB,一般设置swap分区大小等于或略小于物理内存大小即可

    

6、内核优化

        我们可以调整vm脏数据刷新策略,/proc/sys/vm/dirty_expire_centisecs,脏数据在缓存中允许保留的时长默认3000即30s,如果业务的数据是连续性的写,我们就可以适当调小此参数。

        调整脏页面占总内存的最大比例,/proc/sys/vm/dirty_background_ratio,值默认是10,超过这个值,会刷新脏页面到磁盘,增加这个值,系统会分配更多的内存用于写缓冲,因而可以提升写磁盘的性能,我们根据需求结合业务,进行配置即可。

       

        在/etc/sysctl.conf添加一些参数

         net.ipv4.tcp_retries = 5 放弃回应一个tcp连接请求前,需要多少次重试

        net.ipv4.tcp_syn_retries = 5对于一个新建连接,内核要发送多少个syn连接请求才决定放弃

 

       

TCP内核参数优化调整,/proc/sys/net/ipv4存放着tcp参数的文件

        tcp_keepalive_time  每次正常发送心跳的周期,默认7200s,推荐600s

        tcp_keepalive_probes 在发送心跳消息后,没有接受到对方确认,继续发送探测包次数,默认9,推荐3

        tcp_keepalive_intvl  探测消息未获得响应时,重发消息的时间间隔,默认75s,推荐15s

        tcp_retries2  丢弃一个tcp连接请求时,需要进行多少重试,默认7次,建议3次

        tcp_max_syn_backlog 对于那些依然还未获得客户端确认的连接请求,需要保存在队列中的最大数目,一般默认1024,如果服务器经常出现过载,可以尝试增大这个数字。

7、清除系统内存

    我们先使用free -m 查看内存使用情况,如果cache有点多,先使用sync把buff中的数据写入磁盘,然后使用命令echo 3 > /proc/sys/vm/drop_caches,就可以清除一些缓存

Nginx优化

1、修改文件句柄,每一次用户发起请求,就会生成一个文件句柄,默认是1024个,对Nginx来说太小

系统全局修改,在/etc/security/limits.conf,添加参数

  root  soft  nofile  65535        

  root  hard nofile  65535       

  *       soft  nofile  25535

  *       hard nofile  25535

soft  到达设定值后,操作系统不会采取任何措施,只是发提醒

hard达到设定值后,操作系统会采取机制对当前进程进行限制,这个时候请求会有影响

 配置文件修改,修改worker_rlimit_nofile  35535  适当增大即可

2、cpu亲和配置

cpu的亲和能够使nginx对于不同的work工作进程绑定到不同的cpu上面去。就能够减少在work间不断切换cpu,进程迁移的频率小,来减少性能损耗,一般可以设置为auto自动绑定

查看cpu核心数    cat  /proc/cpuinfo | grep  "cpu cores" |uniq

3、设置work_connections连接数

每一个进程可以处理多少个连接,增加该值可以提高系统的并发能力

4、配置keepalive timeout

长连接的等待时间,可以根据需求进行优化

5、打开配置GZIP压缩

可以打开压缩,压缩访问页面的图片等一些资源提高访问速度, 进而优化Nginx性能

gzip_min_length 指定最小压缩文件大小

gzip_comp_level 指定压缩级别 范围为1到9,值越大压缩程度越大,但是会增加相当大的处理开销,增大延时,适当即可

 

MySQL优化

安全方面:修改默认端口号,禁止root用户远程登录,对用户降权,以普通用户运行mysql

性能方面:升级硬件、内存、磁盘,优化sql语句(开启慢查询),设置索引

参数优化:innodb的buffer缓冲参数调大,连接数调大,缓存的参数优化

架构方面:读写分离,一主多从,高可用集群等

 

参数优化

修改back_log的值,如果MySQL的连接数达到最大连接值,新来的请求会被存在堆栈中,以等待某一连接释放资源。

修改wait_timeout数值,当MySQL连接闲置超过一定时间后会被强行关闭 show processlist 可以查看状态,如果有大量的sleep就可以设置

 

MySQL语句优化

1、避免使用select  * 

2、尽可能的把字段设置成NOT NULL,这样在执行查询的时候,数据库不用去比较NULL值

3、对于部分的文本字段,比如“性别”,我们就可以用enum来定义。MySQL会把enum类型的数据当作数值型来处理,而数值型数据被处理起来的速度要比文本类型快的多。

4、建数据库表时,给字段设置固定合适的大小即可,设置太大就会浪费,查询速度变慢

5、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

6、应尽量避免在 where 子句中使用 !=或<> 操作符,否则将引擎放弃使用索引而进行全表扫描

 

Tomcat优化

1.服务器资源

增加cpu,内存,硬盘

2.采用集群

单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器。

3.优化tomcat参数

调优Tomcat线程池:增加线程池中最大的线程数量等

调优tomcat的连接器Connector:关闭DNS解析,减少性能损耗,修改最少最大可以创建的线程数,等

4.jvm优化

Tomcat 是运行在 JVM 上的,所以对 JVM 的调优也是非常有必要的。

找到 catalina.sh;调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。

5.定时重启tomcat

 

性能优化:

内存优化:-Xms java虚拟机初始化时的最小内存、-Xmx java虚拟机可使用的最大内存

并发优化:maxThreads 客户请求最大线程数、minSpareThreads tomcat初始化时创建的socket线程数、maxSpareThreads tomcat连接器的最大空闲socket线程数、enableLookups 若设置为true,则支持域名解析,可把ip地址解析为主机名、redirectPort 在需要基于安全通道的场合,把客户请求转发到基于ssl的redirectPort端口、acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads)、connectionTimeout 连接超时

缓存优化:compression 打开压缩功能、

compressionMinSize 启用压缩的输出内容大小,默认为2kb、compressableMimeType 压缩类型、connectionTimeout定义建立客户连接超时的时间,如果为-1,表示不限制建立客户连接的时间

 

安全方面优化

降权启动,防止不法分子通过tomcat获得root权限

修改端口号:修改tomcat配置文件server.xml中的http连接器端口号,防止黑客攻击

更改tomcat的关闭指令:

隐藏服务类型:在server.xml文件中,为connector元素添加server=” ”,注意不是空字符串,是空格组成的长度为1的字符串,或者输入其他的服务类型,在response header中不显示server的信息

JVM优化

1.将新对象预留在新生代

可以为应用程序分配一个合理的新生代空间,以最大限度避免新对象直接进去老年代。

2.大对象进入老年代

大对象占用空间多,直接放入新生代中会扰乱新生代GC,新生代空间不足将会把大量的较小的年轻代对象移入到老年代中,这对GC来说是相当不利的

3.设置对象进入老年代的年龄

当对象年龄达到阀值时,就移动到老年代,

4.稳定与震荡的堆大小

稳定的堆大小对垃圾回收是有利的,获得一个稳定堆大小的方法就是设置 -Xmx 和 -Xms 一样的值

Redis优化

1、限制Redis内存大小 config  set  maxmemory 6GB

如果不限制的话有可能会导致物理内存不足,这样就会使用swap空间,会增大cpu消耗,而操作系统将Redis所用的内存移至swap时,会阻塞Redis进程,从而影响性能,一般预留30%即可

2、内存回收策略,避免大量数据同时失效

有大量缓存在同一时间同时过期,那么会导致 Redis 循环多次持续扫描删除过期字典,直到过期字典中过期键值被删除的比较稀疏为止,而在整个执行过程会导致 Redis 的读写出现明显的卡顿,也会消耗cpu

3、使用slowlog优化耗时命令

使用 slowlog 功能找出最耗时的 Redis 命令进行相关的优化,以提升 Redis 的运行速度

slowlog-log-slower-than  设置慢查询的评定时间,也就是说超过此配置项的命令,将会被当成慢操作记录在慢查询日志中

slowlog-max-len           用来配置慢查询日志的最大记录数    

4、合理设置键值的过期时间

我们应该根据实际的业务情况,对键值设置合理的过期时间,这样 Redis 会帮你自动清除过期的键值对,以节约对内存的占用,以避免键值过多的堆积,频繁的触发内存淘汰策略

 

 

 


http://lihuaxi.xjx100.cn/news/1576395.html

相关文章

Blender DreamUV插件使用简明教程

DreamUV 是一个可让你在Blender的 3D 视口中操纵 UV的工具集合。 该工具集设计用于可重复使用的纹理&#xff0c;例如平铺纹理、装饰表和纹理图集。 其目的是让你无需退出 3D 视图即可对几何体进行纹理处理&#xff0c;从而节省时间并提高灵活性。 1、安装DreamUV 首先下载为…

基于微信小程序的医院挂号预约系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

idea 如何在命令行快速打开项目

背景 在命令行中从git仓库检出项目&#xff0c;如何在该命令行下快速用idea 打开当前项目&#xff0c;类似vscode 可以通过在项目根目录下执行 code . 快速打开当前项目。 步骤 以macos 为例 vim /usr/local/bin/idea 输入如下内容 #!/bin/sh open -na "IntelliJ IDE…

FPGA project : uart232_ram_vga

重点学习&#xff1a; 本实验重点学习了双口ram解决多bit跨时钟域同步处理的问题。 其实signal port ram&#xff0c;它的输入口和输出口分别用不同的时钟&#xff0c;也可以解决这个问题。 让我意识到的比较重要的事情&#xff1a; 1&#xff0c;代码设计中&#xff0c;一…

电子电路学习笔记之NCV6324BMTAATBG——同步降压转换器

关于同步降压转换器&#xff1f; 是一种广泛应用于各种电子产品中的转换器。它具有输入范围宽、转换效率高、输出电流大等优点。在同步降压型转换器的驱动电路中&#xff0c;一般包括电平移位电路、死区时间控制电路以及过零检测电路等。 电平移位电路用于将固定电平Vcc和GND…

Linux 磁盘扩容glusterfs节点容量过程

resize2fs 命令 使用 resize2fs 命令扩展文件系统时&#xff0c;可以通过指定新的大小来设置扩容量。有几种指定方式&#xff1a; 扩展到指定的绝对大小&#xff08;如 10GB&#xff09;&#xff1a; sudo resize2fs /dev/<partition> 10G其中&#xff0c; 是要扩展的…

两种fifo实现方式的差异

减少数据通路翻转来降低功耗&#xff1a; 以FIFO &#xff08;当容量较小而使用寄存器作为存储部分&#xff09;设计为例&#xff0c;虽然理论上可以使用比较简单的数据表项逐次移位的方式&#xff0c;实现FIFO 的先入先出功能&#xff0c;但是却应该使用维护读写指针的方式&am…

LCR 012.寻找数组的中心下标

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 012. 寻找数组的中心下标 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 获取第一个元素左边的元素 leftSum 和 右边的元素和 rightSum&#xff0c;按序遍历数组的同时不断更新 leftSu…