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

这篇具有很好参考价值的文章主要介绍了面试题-Linux优化&一些服务优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

 文章来源地址https://www.toymoban.com/news/detail-730960.html

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 会帮你自动清除过期的键值对,以节约对内存的占用,以避免键值过多的堆积,频繁的触发内存淘汰策略

 

 

 

到了这里,关于面试题-Linux优化&一些服务优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(92)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(74)
  • 【Linux入门篇】服务器优化

      目录 🍁selinux优化 🍁系统主机名优化 🍁命令提示符优化 🍁系统时间同步优化 🍁系统字符编码优化 🍁系统远程连接优化 🍁系统资源限制优化 🍁系统内核优化 🍁系统内核版本升级 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:Linux从入门到精通         作为系统管

    2023年04月18日
    浏览(35)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(89)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(56)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(52)
  • 【面试题25】如何免密登录Linux服务器

    本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题, 对标资深工程师/架构师序列 ,欢迎大家提前关注锁定。 在日常运维工作中,频繁地使用SSH登录到Linux服务器是非常常见的事情。默认情况下,我们需要输入用户名和密码才能与服务器建立

    2024年02月11日
    浏览(51)
  • 使用HTTP/2在Linux上的Nginx服务器进行优化

    随着互联网的发展,HTTP/2协议逐渐成为主流。与传统的HTTP/1.1相比,HTTP/2提供了更高的传输效率和更好的安全性。在Linux上使用Nginx服务器进行优化,我们可以充分利用HTTP/2的优势,提高网站的性能和用户体验。 1. 安装Nginx并启用HTTP/2 首先,确保你的Nginx服务器已经安装并正常

    2024年02月01日
    浏览(58)
  • linux重装系统步骤 包含raid【主要针对服务器重装】,腾讯Linux运维开发面试记录

    8 、查看网关主机名: cat /etc/sysconfig/network 9 、查看单条网卡信息: ethtool 物理网卡名 比如有很多网卡 ,不知道 使用哪个网卡的时候,就用这个方法。 (万兆网Link为yes就是使用的网卡) ​​ 10、查看cpu内存 查看cpu 最简单方法:输入 top 后按 1 即可查看。 查看CPU信息(型号

    2024年04月12日
    浏览(47)
  • 迁移Linux服务器用户数据(将一个服务器的Linux用户数据迁移到另一个Linux服务器用户的流程)

    先来到根目录,再使用tar命令打包数据: tar czvf root.zip.gz ./* 在根目录使用指令: scp 打包好的数据 用户@ip:目的用户下的某个目录 源Linux服务器用户 : 查看压缩包是否到达: 对收到的数据进行解压,使用指令 tar xzvf root.zip.gz 解压到当前目录下。 目的Linux服务器用户 : 看到

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包