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

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

一、 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

时间: 2024-10-27 05:58:41

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

Windows 2003 iis FLV 视频不能播放的原因与解决_win服务器

其实原因很简单,因为国内大多都是Win2003的主机.默认是没有指定输出FLV这种格式的. 虽然FTP里面可以看见,但无法通过http访问,也就无法播放了. 打开IIS 管理器 选择网站属性 就是那可以可以设置主机头的那个地方 还有安全目录 http头 自定义错误 服务 的 看到这个以后呢你就选择 http 头 这样呢就看到了一个 MIME类型 然后你点类型 新建一个类型 扩展名字是 .FLV 类型是 flv-application/octet-stream 然后确定

想做一个vc程序,后台监控指定文件夹中是否存在数据库文件,如果有则将文件内容上传到服务器数据库中。

问题描述 想做一个vc程序,后台监控指定文件夹中是否存在数据库文件,如果有则将文件内容上传到服务器数据库中. 有说可以写服务来后台监控的,但是我不太明白原理,服务是怎么实现后台监控, vc倒是可以直接生成一个服务,但是不清楚原理,完全不知道应该从哪下手. 希望有高手给解答一下. 解决方案 参考:http://blog.sina.com.cn/s/blog_a6fb6cc901017us1.html

文件夹中怎么把所有文件改成平铺模式?

怎么把所有文件改成平铺模式?有时候我们改了一个文件夹里的,其它文件夹还是没变,很是郁闷啊.如何把所有文件夹里的文件改成默认平铺图标模式呢?其实很简单. 你先打开一个文件夹,然后把这个文件夹里的文件改成平铺模式的,然后在上边的菜单栏上选择"工具"->"文件夹选项"->"查看"->"文件夹视图"->"应用到所有的文件夹".

dos(cmd)下 move命令移动某个文件夹下的所有子文件和子目录到根目录

问题描述 dos(cmd)下 move命令移动某个文件夹下的所有子文件和子目录到根目录 我现在在k盘有一个文件夹dir1,想通过cmd命令实现将文件夹a下的所有子文件和子目录移动到k盘.请问这个cmd命令要怎么写.我已经尝试过很多网上的教程了.有的用xcopy先复制,再删除,但是这样耗费的空间很大,假设我的k盘只有4g,但已经装了3g多的东西,所以先复制一份,在删除时行不通的.我就想用move命令或者其他类似命令可以直接剪切过来是最好的. 1.网上的教程有for /f ""tokens

android项目从svn导入eclipse,res文件夹下的几个文件夹显示怎么不对

问题描述 android项目从svn导入eclipse,res文件夹下的几个文件夹显示怎么不对 之前都正常的,后来项目出问题我删了重新导了,就这样了 解决方案 不知道工程结构是怎样的.若res不是源码路径,将之从源码列表删除就可以了;若是,没事,那表是此包无源码,不习惯的话过滤无源码包就可以了(手机上讲不清,不过我感觉讲到位了) 解决方案二: 先看一下 项目中 这些文件在么 然后刷新下项目文件树 如果还没有 就手动导入一下 解决方案三: 这个不影响编译的,假装没看见就好 解决方案四: 重启一下e

java包下的META-INF文件夹下的MANIFEST.MF文件有神马作用

问题描述 java包下的META-INF文件夹下的MANIFEST.MF文件有神马作用 java包下的META-INF文件夹下的MANIFEST.MF文件有神马作用 android客户端服务器java文件应该如何部署到tomcat 解决方案 MANIFEST.MF给出了配置信息. android客户端?你说的是服务器端吧.客户端应该打包成apk在手机上跑,部署到tomcat做什么?

中创-asp.net创建文件夹失败....新建一级文件夹正常,新建二级文件夹失败

问题描述 asp.net创建文件夹失败....新建一级文件夹正常,新建二级文件夹失败 asp.net的一个项目 大致就是给用户在服务器上分配一个控件,比如系统中有个文件夹叫aaa,我在用户 用户登录之后在aaa在aaa中创建一个文件夹叫admin,但是当admin用户登录之后, 如果admin在aaa下新建文件夹不成功 本机的iis以及程序都是正常的,但是部署到服务器上就不行 不是路径的问题,因为我本机都是好的,而且不报任何错误 想问下有没有遇到此问题的人 解决方案 检查下是不是权限的问题. 解

这是我整理的从文件夹中读取所有txt文件,并读取里面内容的java程序,问什么读出来的汉字是乱码?

问题描述 这是我整理的从文件夹中读取所有txt文件,并读取里面内容的java程序,问什么读出来的汉字是乱码? import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import java.io.FileReader; import java.io.IOException; import java.nio.CharBuffer; import java.util.ArrayList; impor

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

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