<sub id="ndxjt"></sub>

          <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                    <sub id="ndxjt"><meter id="ndxjt"></meter></sub>
                     

                    大量session临时文件带来的服务器效率问题

                    http://www.36065980.com 2019年03月17日19:53 浠水网

                    大量session临时文件带来的服务器效率问题
                    上午流量有点大,网站出口大概60M左右,虽然比较高考分数发布时流量小很多,但是访问质量却不太好,web响应比?#19979;?#20999;系统负载很高。

                    检查了下各web节点,所有web服务器的httpd线程均达到满负荷,很奇怪。因为所有web节点都通过nfs来共享web目录,包括session目录来达到session的一致性,检查了下nfs文件服务器,IO?#21015;?#27604;较大,检查了session_tmp目录,发现session目录临时文件达到 70000多个,初步判断也许是因为一级目录下文件过多带来的IO性能下降。

                    以前没有想过session存放的效率问题,今天由此想到了session多级存放的问题,来解决一个目录下session文件过多带来的?#21015;?#25928;率问题,查了下php.net其实php在配置中已经给出了有关选项。

                    php.net上的说明:http://cn.php.net/manual/zh/ref.session.php

                    session.save_path  string

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

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

                    在定义session.save_path中可以定义多级存放的路径,修改php.ini

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

                    将session文件分成两级存放,即/data/session_tmp/4/b/sess_4b1e384ad74619bd212e236e52a5a174If,取前两位字符,但是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处理效率明显好转。


                    发表评论
                    上一篇使用robocopy进行5T文件带权限的迁移
                    下一篇Windows系统强大的复制命令robocopy的操作方法介绍
                    正在加载中……
                    湖北快三走势图

                          <sub id="ndxjt"></sub>

                            <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                                      <sub id="ndxjt"><meter id="ndxjt"></meter></sub>

                                            <sub id="ndxjt"></sub>

                                              <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                                                        <sub id="ndxjt"><meter id="ndxjt"></meter></sub>