分享好友 最新动态首页 最新动态分类 切换频道
服务器响应慢的分析与解决
2024-11-07 22:12

一、排除自身网络问题

可以使用站长工具测试网站速度:站长之家

服务器响应慢的分析与解决

image.png

 


二、检查是否和浏览器有关

换一个浏览器访问网站,进行同样的操作,看是否存在差异。之前有遇到一个问题是在 MacBook 的谷歌浏览器上,有一步操作始终无法呈现结果,按 F12 查看控制台也没有报错,但是有一个接口始终处于pending状态。于是换个浏览器尝试,没有出现该问题。最后发现是由于该接口Get请求后携带的参数在浏览器中的默认编码方式不一样导致的,改为 utf-8 编码后解决问题


三、查看各项服务的日志

看看是不是程序抛出了异常。当然这里是服务响应比较慢,并不是不返回,也不是http返回500。查看一下 tomcat 中的日志或者是程序记录的业务日志。一般来说,也就

 


四、查看服务器各项参数

现在大多公司都有服务监控系统,有cpu、内存、网卡、磁盘、url请求的响应时间请求并发、jvm相关等等的监控。当然公司没有监控系统也不用慌,监控系统只是看起来直观一点。没有监控系统,还是可以通过linux命令、JDK自带的jps, jstack, jmap, jconsole、IBM的HeapAnalyzer以及比较直观监控的JProfiler等来看。

top 命令查看负载(可以安装一个 htop 工具,比 top 更直观更强大

 

top命令界面
htop界面

可以直接使用 yum install -y htop 命令安装htop

 

Tasks行展示了目前的进程总数及所处状态,要注意zombie,表示僵尸进程,。

Cpu(s)行展示了当前CPU的状态,us表示用户进程占用CPU比例,sy表示内核进程占用CPU比例,id表示空闲CPU百分比,wa表示IO等待所占用的CPU时间的百分比。。

Mem行展示了当前内存的状态,total是总的内存大小,userd是已使用的,free是剩余的,buffers是目录缓存。

Swap行同Mem行,cached表示缓存,用户已打开的文件。。

在top命令下,按1,则可以展示出服务器有多少CPU,及每个CPU的使用情况。一般而言,服务器的合理负载是CPU核数*2。也就是说对于8核的CPU,负载在16以内表明机器运行很稳定流畅。如果负载超过16了,就说明服务器的运行有一定的压力了。

如果CPU占用过高,可以根据 pid 和 jstack 工具详细查看是由于哪些代码造成的。


五、项目本身分析

检查项目中的一些比如 线程池、 数据库连接池 等参数的配置。(一些生产服务上不需要开启的服务也应该关闭,比如 swagger UI 等


六、虚拟机分析

使用top指令查看虚拟机的内存占用情况,有时候可以发现虽然虚拟机占用内存的百分比不大却有明显的上限值,我们就需要去查看虚拟机的配置情况。

解决方法(以tomcat为例

image

具体的数值根据实际情况而定。


七、数据库分析

  1. 开启项目中的 sql 执行语句的日志打印,拿出该语句分析并加以优化(优化语句本身或者优化数据库

  2. 设置最大连接数

如果最大连接数的值太小可以根据实际情况进行修改,一般修改为1000即可

  1. 超时控制

mysql存在一项属性“wait_timeout”,默认值为28800秒(8小时),wait_timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天 ,可以通过show global variables like 'wait_timeout';命令来查看。

wait_timeout的含义是:一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。由于dbcp没有检验该connection是否有效,用其进行数据操作便会出现异常。

如果是由超时控制引起的问题,不建议修改wait_timeout的值,在数据库连接的url的后面加上“&autoReconnect=true&failOverReadOnly=false”即可解决。

  1. DNS反向解析

MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。 可以在配置文件里面禁止MySQL进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可

skip-name-resolve (windows与linux下一样的)

  1. 表高速缓存

open_tables:是当前在缓存中打开表的数量。opened_tables:是mysql自启动起,打开表的数量。当Opened_tables数值非常大,说明cache太小,导致要频繁地open table,可以查看下当前的table_open_cache设置

  1. 慢查询日志记录的慢查询日志的目的是确认是否是由于某些语句执行缓慢而导致的服务器响应慢。需要开启慢日志查询记录,以及设置慢查询日志的时间阈值(秒

 


最新文章
9 个最佳 WordPress 内部链接插件(自动 + 手动)
您是否正在寻找最好的内部链接插件来改善您的 SEO 策略?内部链接在搜索引擎优化(SEO)中发挥着重要作用。它们帮助搜索引擎发现您的内容并在搜索结果中排名更高。内部链接插件可以帮助自动化该过程并提供构建更好链接的建议。例如,上面的
武汉地铁下一轮建设计划网络版里,黄陂和江夏,算不算最大赢家?
武汉地铁下一轮建设计划网络版里,黄陂和江夏,算不算最大赢家?网络版武汉市第5轮轨道建设计划按照一般规律,武汉每隔5年会编制一份轨道交通建设计划,提交给国家审查通过后,接下来就按照规划分批建设。2019年1月,武汉第4轮轨道建设计划
史上最全大型互联网“Java架构师成长路线”首发,对标BAT等互联网大厂P6+需求
上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。 很多人担心学了容易忘,这里教你一个方法,那就是重复学习。 打个比方,假如你
云南排名前十seo公司(云南百度推广排名查询)
其实云南排名前十seo公司的问题并不复杂,但是又很多的朋友都不太了解云南百度推广排名查询,因此呢,今天小编就来为大家分享云南排名前十seo公司的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录网络seo排
AI+传媒:全维赋能开启新纪元,2025年大展宏图!
在迅速发展的科技浪潮中,人工智能(AI)正在全方位推动各行各业的变革。最近,北京人工智能产业联盟发布的《人工智能蓝皮书:中国通用人工智能发展报告(2024)》一方面揭示了生成式人工智能的创新动态,另一方面也昭示着AI在传媒领域的广
如何选择合适的邮箱进行OpenAI注册
如今,AI技术的发展已经渗透到了各个领域,并对我们的生活产生了深远的影响。OpenAI作为全球领先的人工智能研究机构,致力于推动AI技术的创新与发展。如果你对AI技术感兴趣,想要注册OpenAI账号,那么一个有效的邮箱是必不可少的。选择合适
12种文本数据采集方法
grabage_0.1_nk提供最基础的采集功能,有经验的开发人员可以将其嵌入到系统模块中用于采集数据。nk版本的内容检查不算完整,只能匹配部分发布时间,对于部分网页将作者,来源,发布时间混合在一起的情况,未能很好的解决。该问题会在将来的
AIGC重塑文旅行业新场景、新业态、新消费
(来源:中陆必得旅游规划)编者按AIGC(人工智能生成内容)在文旅产业中发挥着越来越重要的作用。通过深度学习、自然语言处理和计算机视觉等技术,AIGC能够自动化地分析和理解大量数据,从而生成丰富多样的内容。这不仅提高了内容创作的效
AI代码生成器——Cody
Cody由Sourcegraph开发,是一款人工智能驱动的编码助手,它不仅仅是一个简单的代码完成工具,更是一项功能强大且富有创新精神的工具。其主要优势在于能够深度理解代码编写的上下文,为开发人员提供准确、有意义的建议和评论。 Cody能够利用
会议OA项目之会议审批(亮点功能:将审批人签名转换为电子手写签名图片)
Java实现支持人脸识别的会议签到系统,方便参会人员高效签到,提高会议签到的安全性。采用深度学习进行模型训练以提高识别准确率,需要设计并优化相关的人脸识别算法。基本功能​ 1、支持基本的会议管理功能,包括会议申请、开始会议、会议
相关文章
推荐文章
发表评论
0评