当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决       通过搜查找到了问题所在并进行了解决,在此详细记录以供参考。 一、 temp文件夹大量文件的删除 以sess开头的存在于temp系统临时文件夹的文件,是php的session保存文件,由于php建立了session.........
    ▪Linux下SFTP用户权限设置条件及实现命令       众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置。必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权.........
    ▪IIS PHP环境Temp文件夹的权限问题引起的网站故障       前几天不知为何,服务器抽风严重… 服务器非常慢,把WINDOWS2003重启了,结果连不上服务器。结果悲剧的去了机房。查找不出什么问题,GHOST恢复系统。几天后回去又装了个新站上去。再过.........

[1]服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决
    来源: 互联网  发布时间: 2013-12-24

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

一、 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./article/34301.htm


    
[2]Linux下SFTP用户权限设置条件及实现命令
    来源: 互联网  发布时间: 2013-12-24
众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置。

必要条件:
你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。
如何查看自己服务器上的ssh版本?大家可以尝试以下命令:
$ ssh -V
具体实施步骤:
1. 我们需要创建一个用户组,专门用于sftp用户
$ groupadd sftpusers
2. 我们创建一个用户test
$ useradd -s /bin/false -G sftpuser test
注意这里我们将test用户的shell设置为/bin/false使他没有登陆shell的权限
3. 编辑 /etc/ssh/sshd_config
找到Subsystem这个配置项,将其修改为
Subsystem sftp internal-sftp
然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
保存并关闭文件
4. 修改test用户home文件夹的权限,让其属于root用户
chown root ~test
5. 重启sshd服务
$ service sshd restart
6. 测试用户账号
$ ssh test@localhost
连接会被拒绝或者无法登陆
$ sftp tesst@localhost
登陆后你会发现你的账号无法切换到除自己home目录之外的地方的
常见问题:
如果你链接服务器的时候出现下面的提示:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

    
[3]IIS PHP环境Temp文件夹的权限问题引起的网站故障
    来源: 互联网  发布时间: 2013-12-24

前几天不知为何,服务器抽风严重…

服务器非常慢,把WINDOWS2003重启了,结果连不上服务器。结果悲剧的去了机房。

查找不出什么问题,GHOST恢复系统。

几天后回去又装了个新站上去。再过两天后,问题又出现了。

排查过程 检查网页服务器,病毒,木马?是否被入侵? 检查数据库服务器,CPU,内存,网络一切正常,相应的端口也做了 IP 限制,只允许网页服务器访问,查看日志文件也没有异常情况 检查其余的 .Net 网站,速度正常,没有任何问题 检查其余的 Php 网站,架构方法一样,也没有任何问题(其余的 php 网站访问量相对于论坛来说小很多) 新建一个应用程序池和网站应用程序,单人访问速度没有问题,说明 php程序没有问题 检查 Php 设置,发现没有异常

综合以上因素,所以基本可以确定问题主要来源于某个小问题,然后当访问人数过多的时候就会体现出来。

那这个问题是什么呢?

这时候想到去看一下 Php 日志文件,打开 c:\windows\temp 下的 Php 日志文件,突然…  卡死了!

原来这个文件已经达到了 800多 MB,难道是这个问题?

记得以前 IIS 下所有网站都出现了访问缓慢的问题,然后发现 IIS 日志文件达到了几个 G,禁用 IIS 日志后恢复正常。

难道也是这个问题?果断禁用了 Php error log,并删除了这个文件后,略有改善,但是感觉还是没解决…

正在彷徨时,忽然发现 Temp 文件夹下有大量 sess_ 开头的文件!(之前打开 Temp 文件夹的时候就特别慢)数量竟然达到了 10W 个!总容量虽然只有 300MB ,但是占用空间却达到了 3G

看上去问题就出在这里了!

关于 NTFS 下的文件数量

NTFS 的优越性就不用说了,也早就是主流了…

NTFS 下的最大文件数是 4,294,967,295个 (2^32 – 1)

但是为什么仅仅 10W 个文件就让系统慢成这样了呢?好吧,都说是理论值了… 不知道有没有人测试过,但 10W 个的确非常多了…

解决方法

删除这些文件是必需的,这个过程很痛苦… 因为系统卡死了…

后借助 del *.* /q /s 后才成功将其删光

可是光删也不是办法,总有一天它还是会满的…

这些文件其实是 Php 保存 Session 的文件,一个 Session 对应了一个文件,但是 Session 结束的时候不应该删除吗?

其实 Php 是会删除的,但是由于权限的问题,而导致它不能及时的删除了,以上就是 IIS_USERS 组的默认权限。

它并没有删除的权限 !难怪没办法删除!

知道这个后就简单了,给 IIS_USERS 加上删除的权限就 OK 了!

修改好后,Temp 文件夹下的文件数一直维持在一个数量级,而没有明显的变化~


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3