我们知道,服务器是用来提供各类服务(如Web服务、数据库、办公系统)的专用计算机,服务器的性能及运行状态会直接影响服务的稳定性。不管你用的是云服务器还是托管的服务器,都需要定期对服务器进行维护,否则服务器总有一天会变得让你觉得“卡顿”。很多人觉得服务器的“卡顿”是因为服务器运行时间长了就会卡顿,其实这种想法还是很片面的,很多因素都会导致服务器的“卡顿”现象。
服务器硬件配置及老化程度会影响服务器运行速度及稳定性
服务器和我们家用电脑一样都是由软硬件来支撑的,如果硬件配置跟不上那服务器的性能自然提升不了。
1、检查服务器硬件配置
像Windows系统可在任务管理器中查看CPU及内存占用情况,而Linux系统可通过top命令或free、df等命令查看相关配置。
现在一般的Web站点服务器最低配置都是:CPU2核、内存2G、固态硬盘起步了,如果你的站点访问用户较多,那就要视情况升级你的服务器配置。
2、传统硬件服务器要让机房检查下硬件老化程度
现在云服务器可以不考虑硬件老化情况,但还有不少人在用传统的硬件服务器托管的,这就要看下你的服务器用了多少年了,是否存在硬件老化的情况。
检查服务器是否被人攻击
很多时候服务器的突然卡顿是因为服务器受到了攻击导致的,因为服务器是暴露在公网上的,如果不做一些防护很容易受到各种攻击。
服务器被人攻击最直观的表现有:
服务器内存及CPU占用一直居高不下;
服务器上行带宽被占满,一直对外发包;
系统里出现一些未知文件、程序、账户等。
那我们如何排查呢?这里网络圈给大家的建议是按以下步聚进行排查:
1、首先对服务器系统进行杀毒,如果是Windows系统,一定要安装杀毒软件
2、看下服务器各文件夹下是否有可疑文件及可疑程序
3、看下服务器是否有新增的用户账户,如果有,则要禁用此账户
4、CPU及内存是否占用过高
Windows通过任务管理器可以定位到CPU或内存占用过高的进程,Linux可以通过top、ps等命令定位到CPU或内存占用过高的进程。
进程定位到了之后,看下是否可疑,必要时把进程杀掉。
5、服务器上是否安装了Redis,如果安装了则要检查Redis外网是否可以访问,如果外网可以被访问很容易被人提权
6、检查是否存在可疑的定时任务及网络请求
检查服务代码逻辑
如果排除了被人攻击的情况,那就要检查一下你的服务程序代码是否存在问题了,比如:
1、是否有死循环
2、请求外部资源时是否没加超时限制
3、数据库是否存在慢查询等
服务器上的服务迁移
如果仅仅是因为当前服务器性能跟不上,那除了升级单机配置外还可以考虑将本服务器上的其它服务迁移到另外的服务器,以Web服务为例,我们的建议是:
站点及文件资源放在一台服务器上,用作Web服务器
数据库单独放一台服务器上
必要的CDN加速
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎在线咨询内存使用率较高的可能原因及解决办法有:
1、物理内存不够。充足的物理内存是运行内存充足的基本保证。如果主板有多余内存插槽,可增加与原内存型号规格相匹配的内存。这个可通过鲁大师等工具对电脑硬件配置进行检测,以确定支持的内存类型和频率等信息,再添置匹配的新内存。如下图所示:内存类型为DDR3,频率为1600MHZ。
2、运行内存未能及时释放。电脑运行的程序过多或时间过长,如果程序未能及时释放占用的内存,则很容易导致运行内存不足而降低运行速度。可使用360安全卫士或具有类似功能的软件,定期进行电脑清理和优化加速(如加速球一键加速),以去除不必要的开机自启动程序和各种插件。用户上网浏览窗口打开过多,也容易出现运行内存不足,这时也可使用如360极速浏览器之类支持功能插件的浏览器,通过一键加速功能来释放占用内存。
3、木马病毒感染电脑占用内存。经常上网,难免遇到病毒木马攻击。建议定期使用360安全卫士(侧重于网络安全)加360杀毒(侧重于本地数据安全)或类似软件进行全盘查杀木马、病毒,以防止病毒木马占用运行内存。
4、重复安装安全软件。安全软件对内存的占用非常大,同一台电脑不要安装多个安全软件,比如既安装360安全卫士,又安装百度卫士、电脑管家等等,以防资源内耗相互干扰。建议只保留一套安全软件。
注意事项:用户 *** 作习惯不良,也容易出现运行内存不够、运行速度慢的问题。建议用户养成良好 *** 作习惯,如不同时运行多个大型软件,及时关闭不需要的程序和窗口,及时进行内存清理,多任务环境下不使用迅雷全速下载,每隔半年就重装一次系统等等。
SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。Sql Server运行时候的缓存:
1数据缓存:执行个查询语句,Sql Server会将相关的数据页(Sql Server *** 作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。
2执行命令缓存:在执行存储过程,自定函数时,Sql Server需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。
清除缓存的命令(直接执行第四个命令清除所有缓存):
DBCC FREEPROCCACHE --清除存储过程相关的缓存
DBCC FREESESSIONCACHE --会话缓存
DBCC FREESYSTEMCACHE('All') --系统缓存
DBCC DROPCLEANBUFFERS --所有缓存
注意:清除了缓存,不会释放SQL Server所占用的内存,所以需要通过修改SQL Server内存或重启SQL Server服务器来释放内存。
修改SQL Server内存:
优化:使用以下语句查找出什么语句占内存最高,针对占内存高的语句进行优化
SELECT SSSUM_EXECUTION_COUNT,
TTEXT,
SSSUM_TOTAL_ELAPSED_TIME AS '总和时间',
SSSUM_TOTAL_WORKER_TIME AS '执行耗时',
SSSUM_TOTAL_LOGICAL_READS AS '总和逻辑读数',
SSSUM_TOTAL_LOGICAL_WRITES AS '总和逻辑写'
FROM (SELECT SPLAN_HANDLE,
SUM(SEXECUTION_COUNT)SUM_EXECUTION_COUNT,
SUM(STOTAL_ELAPSED_TIME)SUM_TOTAL_ELAPSED_TIME,
SUM(STOTAL_WORKER_TIME)SUM_TOTAL_WORKER_TIME,
SUM(STOTAL_LOGICAL_READS)SUM_TOTAL_LOGICAL_READS,
SUM(STOTAL_LOGICAL_WRITES)SUM_TOTAL_LOGICAL_WRITES
FROM SYSDM_EXEC_QUERY_STATS S
GROUP BY SPLAN_HANDLE
) AS SS
CROSS APPLY SYSdm_exec_sql_text(SSPLAN_HANDLE)T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC
转自: >
服务器内存8G这个还可以,主要是看程序运行对资源的需求,一般的web应该够用
对平时的维护,最好确保资源占用在60%-80%还要预留一部分给系统缓冲,防止所有资源被进程占用而系统无法执行处理任务,导致卡死,死机,程序被强制退出等情况。
至于影响不影响程序,就要看程序对资源的需求了,最好先排查下资源过高的原因,有一部分原因正是程序本身资源过高引起的。
后来通过了解到,linux系统和平时使用的windwos系统内存运行机制不同。
windows系统的内存是程序运行过程中需要使用才会用到,不用时空闲着。所以当内存使用率过高时,需要检查是否超负载运行。解决方法是停止掉一些进程。
linux系统中,是进程优先使用内存,而不是磁盘。这样会加快读取速度。当有新的进程启动时,再从内存中开辟出一定空间,为新的进程所用。即使进程退出,也不会立刻从内存中清理掉,这样可以加快下次启动进程的速度。所以内存一直是使用率很高的。这是linux系统的独特之处,初使用linux系统的同学需要转换一些思维。不用为linux的内存使用率高而担心。
在图1中,第三行反映出真实内存使用率为125%
再介绍一个linux查看内存的命令, free
free命令可以显示当前系统为使用和以使用的内存情况,还可以显示被内存使用的内存缓冲区。
free命令默认以K单位来显示内存使用情况
Mem行显示数据
total:总内存大小
used:已使用内存大小
free:当前空闲内存大小
shared:多个进程共享的内存总额
buffers/cached:缓存内存数据
-/+ buffers/cache行数据显示
这一行的数据代表应用内存使用情况,可理解为真实内存使用情况。如图1中第三行数据。
used:当前(真实)使用内存总数
free:当前(真实)空闲内存总数
-/+ buffers/cache: 1025604 7165460可理解为当前已经使用的内存为1/8,计算公式used/(used+free)。也就是126%左右。
Swap代表交换分区,不做过多详解
free常用参数:
free -b #以Byte为单位显示内存使用情况
free -k #以KB为单位显示内存使用情况,也是默认参数
free -m #以MB为单位显示内存使用情况
free -g #以GB为单位显示内存使用情况
free -o #不显示应用(真实)内存使用情况列,不推荐
free -s<数字> #间隔数字秒数刷新显示内存使用情况
free -t #显示内存总和列
free -V #显示当前版本
我们需要准备的材料分别是:电脑。
1、在我的电脑中,搜索访问sql占用内存,在右侧的管理服务器中选择重新启动,重启一下IIS。
2、查看一下,sql服务仍然占用大量的内存,内存占用基本没有改变。
3、然后重启sql服务。
4、然后再重启一下sql代理。
5、最后再看一下任务管理器,就会发现内存占用量降低了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)