服务器响应速度慢

服务器响应速度慢,第1张

Tomcat服务器响应过慢解决方案

详细介绍了Tomcat服务器响应慢的解决方案,根据示例代码在原文中有详细介绍。对大家的学习培训或者工作都有一定的参考价值,有需要的朋友可以参考一下。

一、思路分析

1.清除设备本身。

2.服务器特征分析

3.新项目本身的分析(不详尽)

4.vm虚拟机分析

5.数据库查询分析

二。详细的分析方法

1。清除设备本身

能够应用百度站长工具测试网站速度。

2。服务器特征分析

使用top命令查询服务器的资源应用,重点是分析CPU和运行内存的应用。(top命令是Linux下常用的特性分析专用工具,可以即时显示设备中各个进程的资源占用情况。默认设置是5秒更新进程目录,所以类似于Windows的资源管理器。):

第三行显示Cpu的应用,具体含义如下:

Us-客户室中CPU的百分比空,sy-核心室中CPU的百分比空,ni-优先级改变的进程中CPU的百分比,ID-空中剩余CPU的百分比,wa-IOSi中等待CPU的百分比-软件中断占用CPU的百分比,st-Steal时间,分配给服务器上运行的其他vm虚拟机日常任务的具体CPU时间一般只在vm虚拟机OS中。

第四行是当前运行内存情况。服务器的总运行内存为8054352m,其中2879469k已经应用,剩下5174884k和265728k缓存。

我的理解是:当我们的百分比低于50%时,就不用考虑服务器配置的问题了。如果我们在服务器中的百分比长期在70%以上,可以考虑升级服务器的系统配置。另外,还必须查询服务器的上网情况,下载一个大中型的文档基础,才能知道上网情况。

3。新项目的自我分析

如果应用JDBC连接池,需要分析连接池的配置(分析较大的线程池总数和释放时间)。

这里以C3P0为例。下面是我之前做的一个新项目的设备,如下图所示:

本来只有地方检查的装备计划,因为不小心放出来后就忘记改了。很多人浏览的时候,会出现等待网络连接超时的情况。您必须根据新项目的具体情况设置合适的设备数据信息。

也有可能是新项目设计不科学导致反应慢,这里不详细描述。

checkouttimeout——连接池连接用完时,手机客户端启动getConnection()并等待新连接的时间。请求超时后,将引发SQLException。如果设置为0,它将无限期等待。Enterprisems.默认设置:0
minpoolsize-连接池中保存的最小线程数;默认设置:3
maxpoolsize-连接池中保存的最大连接数。初始值:15
maxidletime-large空空闲时间。如果在设定的时间内没有应用,连接将会丢失。如果是0,就永远不会丢失。初始值:0
maxidlemeexcessconnections-默认值:0EnterpriseS的配备是为了更好地减轻连接池的负载。比如连接池中的线程数量由于数据信息浏览的高峰期,建立了很多数据信息连接,但是后期时间范围内需要的连接数据库数量很少。这个时候连接池中完全没有必要维护那么多的连接,所以必须断开和丢弃一些连接来减轻负载,必须低于maxIdleTime。如果未设置为0,连接池中的连接总数将保持为minPoolSize。0不会解决
acquireincrement-当连接池中的连接耗尽时,c3p0一次获得的额外线程数。初始值:3

4.vm虚拟机分析

当使用top命令查询vm的内存占用情况时,有时可以发现虽然vm占用运行内存的百分比并不大,但是有一个显著的上限值,所以我们要查询vm的配置。

解决方案(以tomcat为例):

实际标准值视具体情况而定。

5。数据库查询分析(MySql)

数据库中必须考虑的分析内容和层次很多。这里我只说一下我遇到过的几种情况:

A.最大连接数

显示变量,如“%max_connections%”;查询的最大连接数
显示类似“threads%”的状态;当今连接的应用

Threads_connected-打开线程的数量

threads_running——这个标准值是指被激发的线程数,这个标准值一般比连接的标准值小很多。

如果最大连接数的值很小,可以根据具体情况改变。一般可以改成1000。有两种方法可以设置它:

1.临时设置,重新启动服务项目后将无效。

2.更改数据库查询环境变量

在/etc/my.cnf文档中的[mysqld]下调整一行:max_connections=1000。

B.请求超时 *** 作

Mysql有一个特性“wait_timeout”,初始值为28800秒(8小时)。可以设置wait_timeout的值,但最大值只有2,147,483,不能增加。也就是24.85天左右,可以根据‘wait_timeout’这样的show全局变量来使用;要查询的命令。

“wait_timeout”的含义是:如果一个连接空超过八小时,Mysql会自动断开连接。说白了,如果一个连接在八小时内没有话题活动,就会自动断开连接。因为dbcp还没有检测到连接是否合理,用它来进行数据信息的实际 *** 作会发现异常。

如果问题是由请求超时 *** 作引起的,不建议更改wait_timeout的值并添加“&autoReconnect=true&FailOverReadOnly=false”可以被处理。

c.DNS反向分析

MySQL查询一个数据连接后,首先获取对方的IP地址,然后对这个IP地址进行反向DNS分析,得到与这个IP地址相匹配的IP地址。在管理权限系统软件中使用IP地址区分管理权限。反向DNS分析非常耗时,可能会让客户感觉速度变慢。甚至在某些情况下,反方向分析的IP地址并没有偏向这个IP地址,此时连接也无法成功。要禁止MySQL在环境变量中进行反向DNS分析,只需在my.cnf的[mysqld]文章段落中添加以下一行:

Skip-name-resolve(在Windows和linux下相同)

D.表缓存

显示全局状态,如“打开的%tables%”;打开的表总数:

Open_tables:是今天缓存文件中打开的表的总数。

Open_tables:是自mysql启动以来打开的表的总数。

当Opened_tables的标记值很大时,说明缓存很小,需要经常打开表。可以查询当前table_open_cache设置:

显示类似“table_open_cache”的变量;查询缓存文件的上限值

table_open_cache的值有两种设置方式(如果是4g内存上下运行的服务器,建议设置为2048):

1.临时设置,重新启动服务项目后将无效。

设置全局table_open_cache=2048

2.更改数据库查询环境变量

在/etc/my.cnf文档中的[mysqld]下调整一行:table_open_cache=2048。

E.慢速查询日志

记录慢查询日志的目的是为了确定服务器响应慢是否是因为某些语句执行慢造成的。

慢查询就不细说了,网上能找到很多。

不过最后根据我具体的新项目分析,没有问题,但是MongoDb的CPU马上就满了,注释掉就好。

文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存