服务器性能变慢 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处理效率明显好转

相关参考

session.save_path目录大量session临时文件带来的服务器效率问题
http://wenku.baidu.com/view/b3921d8ea0116c175f0e484e.html
IIS PHP环境Temp文件夹的权限问题引起的网站故障
http://www.jb51.net/article/34301.htm

(0)

相关推荐

  • 查找服务器变慢的方法

    1.设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快慢的非常重要因素!一般Windows预设的是由系统自行管理虚拟内存,它会因应不同程序所需而自动调校交换档的大小,但这样的变大缩小会给系统带来额外的负担,令系统运作变慢!有见及此,用户最好自定虚拟内存的最小值和最大值,避免经常变换大小.要设定虚拟内存,在"我的电脑"上按右键选择"属

  • 不错的服务器变慢的两种非常规解决办法

    对于网站来说,流量是追求,但是对于站长来说,服务器速度才是根本.没有一个站长会容忍自己的服务器变慢,同样,我作为服务器维护人员,当服务器变慢的时候,就会非常的着急. 从我最近两次解决服务器变慢的问题来看,有时候很难想到服务器变慢会因为这些原因.下面给大家介绍一下,希望某一天你服务器变慢的时候能够想到这个思路! 服务器变慢非常规解决方法一 场景:    在网通机房托管了一台服务器,百M独享.花了很多钱,当然是为了创造更高的价值,这个服务器主要是用来做视频点播.但是从托管之日起,从未感受到100M独

  • MySQL数据库服务器逐渐变慢分析与解决方法分享

    一.检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU.内存.交换.磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成.除此之外,还应观注那些占用系统资源(cpu.内存)的进程. 1.使用sar来检查操作系统是否存在IO问题 #sar-u210- 即每隔2秒检察一次,共执行20次. 结果示例: 注:在redhat下,%system就是所谓的%wio. Linux2.4.21-20.ELsmp (Y

  • 服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决

    通过搜查找到了问题所在并进行了解决,在此详细记录以供参考. 一. temp文件夹大量文件的删除 以sess开头的存在于temp系统临时文件夹的文件,是php的session保存文件,由于php建立了session却在过期后没有成功删除,于是导致大量文件的积累. 清理方法很简单,新建批处理文件del_temp.bat,其中写入如下命令: 复制代码 代码如下: del %TEMP% /s /q *.* 保存后双击运行,即开始进行删除处理(也可直接在cmd命令行中输入执行)你也可以将其加入开机启动项,

  • Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

    本文实例讲述了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法.分享给大家供大家参考.具体如下: 这个东东本来是做来给公司数据同步用的:新服务器还没正式启用,旧的服务器还在使用,每天都有大量图片传到旧服务器上面,为了避免备份全部图片,所以写了这么个工具. 1. 运行效果如下图所示: 2. Python代码如下: 复制代码 代码如下: # coding=gbk ''' Created on 2011-1-7 @author: HH ''' import os,ConfigParse

  • Java如何在不存在文件夹的目录下创建文件

    核心代码如下所示: 1. String strPath = "E:\\a\\aa\\aaa.txt"; File file = new File(strPath); if(!file.exists())){ file.file.mkdirs(); } 2. String strPath = "E:\\a\\aa\\aaa.txt"; File file = new File(strPath); File fileParent = file.getParentFile

  • Python列出一个文件夹及其子目录的所有文件

    python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. >>> import os >>> for i in os.walk("."): ... print i[0],"\n##"

  • asp.net 获取指定文件夹下所有子目录及文件(树形)

    #region 获取指定文件夹下所有子目录及文件(树形)         /****************************************          * 函数名称:GetFoldAll(string Path)          * 功能说明:获取指定文件夹下所有子目录及文件(树形)          * 参    数:Path:详细路径          * 调用示列:          *           string strDirlist = Server.M

  • C#实现判断文件夹存在与否并创建文件夹的方法

    本文实例讲述了C#实现判断文件夹存在与否并创建文件夹的方法.分享给大家供大家参考,具体如下: protected void Button1_Click(object sender, EventArgs e) { if (Directory.Exists(Server.MapPath("~/upimg/hufu")) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(Server.MapPath("~/upimg/hu

  • Asp.net FileUpload上传文件夹并检测所有子文件的实现代码

    Asp.net FileUpload上传文件夹并检测所有子文件的实现代码,非常简单,具体内容如下所示: 1.在FileUpload控件添加一个属性 webkitdirectory=""就可以上传文件夹了 <asp:FileUpload ID="FileUpload1" runat="server" webkitdirectory="" /> 2.检测文件夹下所有子文件 string DirectoryName =

  • C#监控文件夹并自动给图片文件打水印的方法

    本文实例讲述了C#监控文件夹并自动给图片文件打水印的方法.分享给大家供大家参考.具体分析如下: 个人私心的缘故,经常写一些博客之类的文章,由于看到网络上面好多同志转载后不标明出处,所以特地写了这么一个小程序,这个小程序的功能是当我在页面上通过QQ截图之后,把截到的图片保存到一个指定的路径,然后工具自动帮我把图片上面加上水印. 下面是全部代码: using System; using System.Collections.Generic; using System.ComponentModel;

  • Java编程迭代地删除文件夹及其下的所有文件实例

    本文研究的是Java编程迭代地删除文件实例,具体实现代码如下. 实例代码: public static void main(String[] args) { String filePath = "c:" + File.separator +"b"; File file = new File(filePath); if (file.exists()) { if (file.isFile()) { deleteFile(filePath); } else { delet

  • Linux 中批量提取文件夹下所有目录及文件名称

    1.当前目录下打开CMD控制台窗口,执行如下bat命令:dir *.*/b>文件名.txt 2.如下图例操作步骤: 打开CMD窗口 输入命令 生成文件 结果截图 总结 以上所述是小编给大家介绍的Linux 中批量提取文件夹下所有目录及文件名称 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

随机推荐