应用服务器响应缓慢的原因及分析技巧 (应用服务器慢怎么分析)

在当今互联网高速发展的时代,应用服务器已经成为了企业中极为常见的一项技术。而在这个过程中,有时我们会遇到应用服务器响应缓慢的情况。那么,当我们遇到这种情况时,应该从哪些方面去分析原因,以及如何进行技巧处理呢?下面就来详细讲解一下。

一、缓慢的原因

1.硬件问题

服务器的硬件损坏或者配置不符合实际需求,可能是服务器响应缓慢的原因之一。比如,当服务器的内存和硬盘容量不足以承载业务时,响应速度就会大打折扣。

2.软件问题

应用服务器的操作系统、数据库、Web服务器、应用程序等方面的软件问题也是导致响应缓慢的常见原因。这些问题可以涉及到配置、设计、版本、错误等。

3.网络问题

服务器所在的局域网、广域网,甚至Internet的网络情况,也经常会成为服务器响应缓慢的原因之一,包括网络带宽、响应时间、IP地址冲突等问题。

4.应用程序代码问题

应用程序的代码中可能存在缺陷,例如死循环、大量文件I/O、数据库连接缺陷等,都可能会导致应用服务器响应缓慢。

5.压力过大

服务器负载过重也很容易导致应用服务器响应缓慢。这种情况通常发生在业务、日志或者数据频繁写入或读取的情况下。

以上就是导致服务器响应缓慢的主要原因。那么如何去分析并解决这些问题呢?下面一一进行讲述。

二、分析技巧

1.监测工具

如果服务器响应缓慢,首先要使用监测工具来获取详细的性能数据。透彻了解服务器的性能瓶颈是什么,能够帮助定位问题所在的范围。

2.硬件

如果硬件配置过低,就必须要进行修改以提高性能。比如增加内存、切换高速硬盘等。如果服务器经常耗尽内存和CPU资源,那么需要调整配置,增加资源。

3.网络瓶颈

如果服务器位于广域网中,并且响应速度缓慢,那么我们需要检查网络连接。可以通过ping命令或traceroute命令来识别网络瓶颈。

4.日志

我们可以通过查看日志来识别代码或者应用程序问题。比如,可以查看操作系统、数据库或者应用程序日志文件,以获得有关错误的详细信息。

5.数据库

如果服务器响应过慢,而且数据库一直在运行,那么很可能是与数据库有关的问题。通过检查数据库运行情况,可以找到是否有大量的慢SQL查询、死锁等问题。

6.压力过大

如果服务器负载过重,我们可以使用缓存技术和负载均衡技术来解决问题。比如,可以使用应用服务器缓存和Nginx反向代理等工具来实现负载均衡,并确保服务器正常运行。

以上就是分析服务器响应缓慢的主要技巧。当遇到这种问题时,通过使用监测工具,同时结合上述技巧来进行诊断,是更好的方法。如果在这个过程中无法解决问题,更好的办法是联系相应的技术支持部门进行帮助。

三、

综上所述,应用服务器响应缓慢的原因可以是硬件、软件、网络、应用程序代码等问题。针对这些问题,我们可以采用不同的技巧来进行分析和解决。如果此时问题无法解决,及时与相应技术部门联系,寻求帮助,会更加有效。希望这篇文章能够帮助读者解决和分析服务器响应缓慢的问题。

相关问题拓展阅读:

web服务器访问缓慢,作为运维人员,如何定位故障

遇到服务器故障,问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手:

一、尽可能搞清楚问题的前因后果

不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况。不然你很可能就是在无的放矢。

必须搞清楚的问题有:

故障的表现是什么?无做蚂改响应?报错?

故障是什么时候发现的?

故障是否可重现?

有没有出现的规律(比如每小时出现一次)

最后一次对整个平台进行更新的内容是什么(代码、服务器等)?

故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)?

基础架构(物理的、逻辑的)的文档是否能找到?

是否有监控平台可用? (比如Munin、Zabbix、 Nagios、 New Relic…

什么都可以)

是否有日志可以查看?. (比如Loggly、Airbrake、 Graylog…)

最后两个是最方便的信息来源,不过别抱太大希望,基本上它们都不会有。只能再继续摸索了。

二、有谁在?

代码如下:

$ w

$ last

用这两个命令看看都有谁在线,有哪些用户访问过。这不是什么关键步骤,不过更好别在其他用户正干活的时候来调试系统。物兆有道是一山不容二虎嘛。(ne cook in

the kitchen is enough.)

三、之前发生了什么?

$

history查看一下之前服务器上执行过的命令。看一下总是没错的,加上前面看的谁登录过的信息,应该有点用。另外作为admin要注意,不要利用自己的权限去侵犯别人的隐私哦。

到这里先提醒一下,等会你可能会需要更新 HISTTIMEFORMAT

环境变量来显示这些命令被执行的时间。对要不然光看到一堆不知道啥时候执行的命令,同样会令人抓狂的。

四、现在在运行的进程是啥?

代码如下:

$ pstree -a

$ ps aux

这都是查看现有进程的。 ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行的进程及相关用户。

五、监听的网络服务

代码如下:

$ netstat -ntlp

$ netstat -nulp

$

netstat -nxlp

我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务。netstat -nalp倒也可以。不过我绝不会用 numeric 选项

(鄙人一点浅薄的看法:IP 地址看起来更方便)。

找到所有正在运行的服务纯判,检查它们是否应该运行。查看各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。

如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。

通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。如果你看到一台服务器上有三四十个监听端口开着,那还是做个记录,回头有空的时候清理一下,重新组织一下服务器。

六、CPU 和内存

 代码如下:

$ free -m

$ uptime

$ top

$

htop

注意以下问题:

还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap?

还有剩余的CPU吗? 服务器是几核的? 是否有某些CPU核负载过多了?

服务器更大的负载来自什么地方? 平均负载是多少?

七、硬件

代码如下:

$ lspci

$ dmidecode

$

ethtool

有很多服务器还是裸机状态,可以看一下:

找到RAID 卡 (是否带BBU备用电池?)、 CPU、空余的内存插槽。根据这些情况可以大致了解硬件问题的来源和性能改进的办法。

网卡是否设置好?

是否正运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?

八、IO 性能

代码如下:

$ iostat -kx 2

$ vmstat 2 10

$ mpstat

2 10

$ dstat –top-io –top-bio

这些命令对于调试后端性能非常有用。

检查磁盘使用量:服务器硬盘是否已满?

是否开启了swap交换模式 (si/so)?

CPU被谁占用:系统进程? 用户进程? 虚拟机?

dstat 是我的更爱。用它可以看到谁在进行 IO: 是不是MySQL吃掉了所有的系统资源? 还是你的PHP进程?

九、挂载点 和 文件系统

 代码如下:

$ mount

$ cat /etc/fstab

$ vgs

$

pvs

$ lvs

$ df -h

$ lsof +D / /* beware not to kill your box

*/

一共挂载了多少文件系统?

有没有某个服务专用的文件系统? (比如MySQL?)

文件系统的挂载选项是什么: noatime?

default? 有没有文件系统被重新挂载为只读模式了?

磁盘空间是否还有剩余?

是否有大文件被删除但没有清空?

如果磁盘空间有问题,你是否还有空间来扩展一个分区?

十、内核、中断和网络

 代码如下:

$ sysctl -a | grep …

$ cat

/proc/interrupts

$ cat /proc/net/ip_conntrack /* may take some time on busy

servers */

$ netstat

$ ss -s

你的中断请求是否是均衡地分配给CPU处理,还是会有某个CPU的核因为大量的网络中断请求或者RAID请求而过载了?

SWAP交换的设置是什么?对于工作站来说swappinness 设为 60 就很好,

不过对于服务器就太糟了:你更好永远不要让服务器做SWAP交换,不然对磁盘的读写会锁死SWAP进程。

conntrack_max 是否设的足够大,能应付你服务器的流量?

在不同状态下(TIME_WAIT, …)TCP连接时间的设置是怎样的?

如果要显示所有存在的连接,netstat 会比较慢, 你可以先用 ss 看一下总体情况。

你还可以看一下 Linux TCP tuning

了解网络性能调优的一些要点。

十一、系统日志和内核消息

 代码如下:

$ dmesg

$ less /var/log/messages

$

less /var/log/secure

$ less /var/log/auth

查看错误和警告消息,比如看看是不是很多关于连接数过多导致?

看看是否有硬件错误或文件系统错误?

分析是否能将这些错误事件和前面发现的疑点进行时间上的比对。

十二、定时任务

 代码如下:

$ ls /etc/cron* + cat

$ for user in

$(cat /etc/passwd | cut -f1 -d:); do crontab -l -u $user; done

是否有某个定时任务运行过于频繁?

是否有些用户提交了隐藏的定时任务?

在出现故障的时候,是否正好有某个备份任务在执行?

十三、应用系统日志

这里边可分析的东西就多了,

不过恐怕你作为运维人员是没功夫去仔细研究它的。关注那些明显的问题,比如在一个典型的LAMP(Linux+Apache+Mysql+Perl)应用环境里:

Apache & Nginx; 查找访问和错误日志, 直接找 5xx 错误, 再看看是否有 limit_zone 错误。

MySQL;

在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程在运行,是否有disk/index/query 问题.

PHP-FPM; 如果设定了 php-slow 日志, 直接找错误信息 (php, mysql, memcache, …),如果没设定,赶紧设定。

Varnish; 在varnishlog 和 varnishstat 里, 检查 hit/miss比.

看看配置信息里是否遗漏了什么规则,使最终用户可以直接攻击你的后端?

HA-Proxy;

后端的状况如何?健康状况检查是否成功?是前端还是后端的队列大小达到更大值了?

结论

经过这5分钟之后,你应该对如下情况比较清楚了:

在服务器上运行的都是些啥?

这个故障看起来是和 IO/硬件/网络 或者 系统配置 (有问题的代码、系统内核调优, …)相关。

这个故障是否有你熟悉的一些特征?比如对数据库索引使用不当,或者太多的apache后台进程。

你甚至有可能找到真正的故障源头。就算还没有找到,搞清楚了上面这些情况之后,你现在也具备了深挖下去的条件。继续努力吧!

MySQL数据库服务器逐渐变慢 该如何分析与解决

MySQL 在崩溃恢复时,会遍历打开所有 ibd 文件的 header page 验证数据字典的准确性,如果 MySQL 中包含了大量表,这个校验过程就会比较耗时。 MySQL 下崩溃恢复确实和表数量有关,表总数越大,崩溃恢复时间越长。另外磁盘 IOPS 也会影响崩溃恢复时间,像这里开发库的 HDD IOPS 较低,因此面对大量的表空间,校验速度就非常缓慢信芦枝。另外一个发现,MySQL 8 下正常启用时居然也会进行表空间校验,而故障恢复时则会额外再进行一次表空间校验,等于校验了 2 遍。不过 MySQL 8.0 里多了一个特性,即表数量超过 5W 时,会启用多线程扫描,加快表空间校验过程。

如何跳过校验MySQL 5.7 下有方法可以跳过崩溃恢复时的表空间校验过程嘛?查阅了资料,方法主要有两种:

1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那么 validate = false,即可以跳过表空间校验。实际测试的时候设置 innodb_force_recovery =1,也就是强制恢复跳过坏页,就可以跳过校验,然后重启就是正常启动了。通过这种临时方式可以避免崩溃恢复后非常耗时的表空间校验过程,快速启动 MySQL,个人目前暂时未发现有什么隐患。2. 使用共享表空间替代独立表空间这样就不需要打开 N 个 ibd 文件了,只需要打开一个 ibdata 文件即可,大大节省了校验时间。自从听了姜老师讲过使用共享表空间替代独立表空间解决 drop 大表时性能抖动的原理后,感觉共享表空间在很多业务环境下,反哗碰而更有优势。

临时冒出另外一种解决想法,即用 GDB 调试崩溃恢复,通过临时修改 validate 变量值让 MySQL 跳过表空间验证过程,然后让 MySQL 正常关闭,重新启动就可以正常启动了。但是实际测试发现,如果以 debug 模式运行,确实可以临时修改 validate 变量,跳过表空间验证过程,但是 debug 模式下代码运行效率大打折扣,反而耗时更长。而以非滑敏 debug 模式运行,则无法修改 validate 变量,想法破灭。

楼主可以多提供点线索,有可能是系统文件、磁盘、系统出了临时的问题,有时是操作不正确引起的,如果不经常发生不用管它,如果经常发生前你做了什么操作?下载了什么软件、插件、升级了什么补丁?如果档吵行有全部卸载试试,另外是否是硬件的问题?就是说升级了硬件没有?硬件有异常吗?先软后硬,建议先查杀一下木马,修复一下系统试试。

建碰友议你使用腾讯电脑管家来进行电脑体检,直接删除掉残留的注册表什么的,然后删掉行哗垃圾文件,在进行电脑杀毒看看,希望能帮到你

关于应用服务器慢怎么分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 应用服务器响应缓慢的原因及分析技巧 (应用服务器慢怎么分析)