飞飞侠官方论坛

用户名  找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 13442|回复: 11

[其他建议] 能不能优化一下网站程序,打开网页速度很慢,CPU占用很...

[复制链接]

签到天数: 202 天

[LV.7]常住居民III

9

主题

263

帖子

1667

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1667
发表于 2017-5-29 23:06:08 | 显示全部楼层 |阅读模式
网站打开速度越来越慢了,经常要8秒以上才能显示出来,进入远程发现,CGI进程自动开启了很多,有时多个CGI进程都有20%以上的CPU占用量,再加上打开网站时读取数据库mysql也很耗资源。网站就算只有一个人浏览时或者没有人看的时间,CPU占用也还是很高,我把采集器全部停止,还是一样,重启服务器都没用。



这要是同时有5个人浏览,估计就打不开网站了。

这个配置是 单核E5-2682V4 (2.5G)CPU, 2G DDR4 内存,50G SSD硬盘,10M宽带。

看参数CPU是瓶颈,PHP进程和MYSQL 占用都很高,如果升级双核成本又太高了,希望看看能不能优化一下参数,提高一下速度吧。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 202 天

[LV.7]常住居民III

9

主题

263

帖子

1667

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1667
 楼主| 发表于 2017-5-30 13:55:59 | 显示全部楼层
服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决

通过搜查找到了问题所在并进行了解决,在此详细记录以供参考。

一、 temp文件夹大量文件的删除

以sess开头的存在于temp系统临时文件夹的文件,是php的session保存文件,由于php建立了session却在过期后没有成功删除,于是导致大量文件的积累。

清理方法很简单,新建批处理文件del_temp.bat,其中写入如下命令:


. 代码如下:

del %TEMP% /s /q *.*


保存后双击运行,即开始进行删除处理(也可直接在cmd命令行中输入执行)
你也可以将其加入开机启动项,以使得每次重启系统后即执行一次删除处理。

提示:

1. 如果这里执行一直显示无法进行(志文工作室最先遇到的情况即如此),则可能是temp文件夹及其中部分文件正处于使用状态,那么你可以在同目录下新建一个文件夹tmp,然后修改系统环境变量temp和tmp的位置为此,接着重启系统使得新的临时目录生效,此时即可对temp文件任意删改了。

2. 志文工作室的服务器temp文件夹内存在数十万这样的文件,清理了若干小时才完成。故在进行处理前应停止iis:

net stop iisadmin 关闭iis服务
net start iisadmin 开启iis服务

3. 当然,你不希望在处理的过程中让网站关闭如此之久,所以你应依次进行的操作是:

1>. 关闭iis
2>. 更改php保存session的默认路径(参考后面内容)
3>. 开启iis,检查服务器所有站点是否正常
4>. 执行del_temp.bat进行清理

二、修改php的Session保存路径session.save_path

1. 打开php.ini文件,查找到

“;session.save_path = "/tmp"”
将其修改为指定的位置用于存储session,例如,志文工作室将其改为:

session.save_path = "c:/tmp/phpsession"
当然你也可以使用分级目录的方式,比如改为这样:

session.save_path="5;c:/tmp/phpsession"

关于session的分级目录存放请参考后续内容详解

2. 新建文件夹路径:c:/tmp/phpsession

3. 添加该路径(即phpsession文件夹)的internet来宾账户修改和写入权限,注意最好不要给予执行权限。

4. 启动iis,观察该目录是否会有新的session文件产生。

三、php的session多级目录存放解决大量临时文件效率问题

session多级存放可以缓解一个目录下session文件过多带来的读写效率问题。

php.net上针对sesstion配置相关的说明:http://cn.php.net/manual/zh/ref.session.php

session.save_path string

session.save_path 定义了传递给存储处理器的参数。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp。参见 session_save_path()。
此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于

/tmp/4/b/1/e/3 /sess_4b1e384ad74619bd212e236e52a5a174If
要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh 可以用来做这件事。此外注意如果使用了 N 参数并且 N 大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。
另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 “quotes” 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。

参考以上说明,在定义session.save_path中可以定义多级存放的路径,于是我们可以修改php.ini中的session.save_path为:

session.save_path = “2;/data/session_tmp”

如此将session文件分成两级存放,即类似于

/data/session_tmp/4/b/sess_4b1e384ad74619bd212e236e52a5a174If

取session的前两位字符作为二级目录索引,但是php并不生成目录,需要自己手工生成,这里提供一个php脚本来生成初始的目录。


. 代码如下:

<?php
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
echo "mkdir ".$param."\n”;
exec("mkdir ".$param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
makeDir('/data/session_tmp/'.$string[$i].'/'.$string[$j]);
}
}
?>



session目录分级处理之后,IO处理值增加,http进程降低,web处理效率明显好转


有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 202 天

[LV.7]常住居民III

9

主题

263

帖子

1667

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1667
 楼主| 发表于 2017-6-1 13:03:51 | 显示全部楼层
林荣楷 发表于 2017-6-1 02:20
我也感觉和程序影响关系不大,主要还是服务器,主机设备的老化程度.实在太慢打电话给服务商客服,叫他们测 ...

嗯,还是主机配置低了,这数据库几万的商品确实挺耗资源,PHP产生的临时SESSION文件太多导致无访问也耗CPU资源,还好找到问题,经常清理就可以了。
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 114 天

[LV.6]常住居民II

4

主题

164

帖子

1018

积分

高级淘客

Rank: 4

积分
1018
发表于 2017-6-4 21:47:45 | 显示全部楼层
rdz329 发表于 2017-6-3 10:23
手动删除啊,不会写程序,以前不知道有这个东西,也不知道它对服务器影响这么大,还好排查到了,每过2-3 ...

嗯,我在服务器根目录里找到了这个文件夹.话说你总共多少件商品?不知道是不是和商品数量有关系
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 202 天

[LV.7]常住居民III

9

主题

263

帖子

1667

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1667
 楼主| 发表于 2017-5-30 13:57:17 | 显示全部楼层
本帖最后由 rdz329 于 2017-5-30 14:06 编辑

我通过清空TEMP文件夹后,CGI进程占用高的问题改善了很多。
这个服务器开启也就不到2个月,php session文件就达到了50多万个,能不能在程序中增加每天定时清除临时文件的功能,减小服务器负担。
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 1247 天

[LV.10]以坛为家III

726

主题

3179

帖子

1万

积分

管理员

Rank: 16

积分
13870

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献论坛元老

发表于 2017-5-31 20:45:04 | 显示全部楼层
这个和程序没有什么关系了,服务器需要维护,不是什么都不管。
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 114 天

[LV.6]常住居民II

4

主题

164

帖子

1018

积分

高级淘客

Rank: 4

积分
1018
发表于 2017-6-1 02:20:18 | 显示全部楼层
我也感觉和程序影响关系不大,主要还是服务器,主机设备的老化程度.实在太慢打电话给服务商客服,叫他们测试到底是什么问题
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 85 天

[LV.6]常住居民II

26

主题

192

帖子

1007

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1007
发表于 2017-6-2 00:33:09 | 显示全部楼层
我换了VPS 延时1300+
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 114 天

[LV.6]常住居民II

4

主题

164

帖子

1018

积分

高级淘客

Rank: 4

积分
1018
发表于 2017-6-2 23:04:43 | 显示全部楼层
rdz329 发表于 2017-6-1 13:03
嗯,还是主机配置低了,这数据库几万的商品确实挺耗资源,PHP产生的临时SESSION文件太多导致无访问也耗CP ...

请教下,你是怎么清理临时SESSION文件的?
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索

签到天数: 202 天

[LV.7]常住居民III

9

主题

263

帖子

1667

积分

飞飞侠付费用户

Rank: 12Rank: 12Rank: 12

积分
1667
 楼主| 发表于 2017-6-3 10:23:13 | 显示全部楼层
林荣楷 发表于 2017-6-2 23:04
请教下,你是怎么清理临时SESSION文件的?

手动删除啊,不会写程序,以前不知道有这个东西,也不知道它对服务器影响这么大,还好排查到了,每过2-3天就手动删除一次,影响就不大了。
有问题,多用论坛搜索功能;搜索的关键词尽量简洁,尽量不要用长语句搜索
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|飞飞侠官方论坛 ( 京ICP备14034159号-4 )

GMT+8, 2025-7-16 12:39 , Processed in 0.094591 second(s), 13 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表