文件服务器很卡,session文件导致服务器很卡,改用了redis存储之后,快得飞起

session是服务器端使用的一种记录客户端状态的机制,但是也相对的增加了服务器的存储压力。

因为session是以文件的形式保存在服务器内的。

cd3bf1ced8aed4a5d1f2ab249849ac28.png

而且session文件都是小文件,当服务器中的session文件过多时,会导致服务器的IO效率降低,web处理效率也会降低。

2f76345ad4a320f62e807b35cf3d8fbb.png

因为在同一级目录存在过多的session文件,当然你也可以设置session的多级目录存储。

但是你的session文件一多的话,还是会影响web访问的效率的,并且服务器对于小文件的查找是非常慢的。

怎么解决这个问题呢?

其实我们可以把session保存在redis中就可以了。

0a3ae66316906d9b9bbfe916d85e5f24.png

下面以php为例。其他语言也类似

第一步,先在服务器上安装redis扩展,只有安装了扩展之后,你才能操作redis。

第二步,修改php.ini的配置。

1.redis有密码的设置方法

session.save_handler = redis # 默认的设置是file,这里改成redis

session.save_path = "tcp://127.0.0.1:6379?auth=passwd" # 这里填redis的连接配置参数

2.redis没有密码的设置方法

session.save_handler = redis # 默认的设置是file,这里改成redis

session.save_path = "tcp://127.0.0.1:6379" # 如果redis不带密码,则使用这种配置

3.如果你有多个站点,并不想全局设置的话,你可以在php中操作这两个参数。

ini_set('session.save_handler', 'redis');

ini_set('session.save_path', 'tcp://127.0.0.1:6379');

存储到redis里面的keys的名称是类似 PHPREDIS_SESSIONxxxxxxxxx ,我们只需要连接到redis,并执行 scan 0 match PHPREDIS_SESSION* 即可列出全部的sessionkeys

fd626db304337da67a3012b3035a5a0a.png

总结:这样的话,就可以降低web端访问的压力了,并且服务器的压力也不会太大,比较服务器对于小文件的操作是非常慢的。能够快速的反应过来,降低了服务器的IO操作。但是注意了,列出redis库中的键的时候千万不要用keys *,这样操作的话,如果你的redis数据库中的集合过大的话,是会造成服务器卡顿的,然后可能会一两个小时都会卡住。想要列出库中键的话,可以用scan来查找redis库中键。

举报/反馈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值