Warning: Redis::connect(): connect() failed: Connection refused in /var/www/admclub.com/wp-content/object-cache.php on line 418
优化PHP性能之使用/dev/shm存储Session信息 | _站长俱乐部站长俱乐部

优化PHP性能之使用/dev/shm存储Session信息

这个方法仅适用于类Linux系统。不适用于Windows系统。通常网站都需要保存用户的会话信息,也就是Session。默认情况下,php会使用Files方式存储Session信息,这对经常有用户登录或者其它操作的大网站来说,这肯定是一个需要优化的地方。

为什么使用/dev/shm来存储?有什么好处?

/dev/shm是Linux的临时文件系统格式:tmpfs,"主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。"换句话说,你可以不用安装Memcache就可以使用内存来存储Session信息了。

好了,开始动手吧。好很简单,只需要两步:

首先,确定你的系统有/dev/shm这个目录(如果不是很特别,一般都会有的)。

df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              20G  9.1G  9.7G  49% /
tmpfs                 512M  4.0K  512M   1% /dev/shm

如上所示,如果在Mounted on这列出来有/dev/shm就表示支持shm了。以上这个VPS的shm目录大小是512M。这个值可以手工修改大小。下面再说。

然后,修改php.ini。假设的你php.ini在/etc/php.ini

vi /etc/php.ini

找到

;session.save_path = "/tmp"

修改为:

session.save_path = "/dev/shm"

保存存并退出。

如果你是使用Nginx+php-fpm,那么你还需要重启php-fpm

php-fpm restart

注意哦,php-fpm reload是不行的,一定要restart.

好了,就是这样啦。

对了,说下如何手工调整/dev/shm大小,下面的例子演示把/dev/shm大小修改为1G:

vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1024M 0 0

umount /dev/shm
mount /dev/shm

常见的还有其它的方式,如:使用数据库存储Session,DZ就是这样做的,如果使用数据库存储的话,建议SESSION表使用内存表。还有一种方式就是使用Memcached了。

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>