解决SSDB在CentOS 7.2中打开文件数Max open files的问题(可能导致Too many open files)

解决SSDB在CentOS 7.2中打开文件数Max open files的问题(可能导致Too many open files)

可能SSDB的重点在PHP/CPP/Java/Go,python的库不是很好用。

原生的库不支持python 3,第三方库又很久没有更新过,很多功能不支持,最终选择使用自己patch了一下的ssdb.py

ssdb的社区不太活跃,Server端和文档也有一些待提升的地方,特别是打开文件数,比较扑朔迷离,解决了问题也不知道怎么Pull Request到官方。

官方文档摘抄:

『禁止使用 CentOS 7』,『你无法搞定 CentOS 7』

实际使用中发现,可能是作者被相关问题问的太多,有些反应过度。

老蔡料想,同类数据库大概率也会遇到类似问题,结果果然发现,在riak的文档中就有CentOS 7如何调整软硬连接数的说明:

第一步,修改系统打开文件限制

# 修改/etc/security/limits.conf
# 加入
*              soft     nofile          1020000
*              hard     nofile          1020000

将*替换成运行ssdb的用户名更佳。

系统全局文件大小也有相应办法调整

# 修改/etc/sysctl.conf
# 加入
fs.file-max = 1020000

第二步,增加进程打开文件限制

调整硬限制后,如果Max open files还是没有增加,可以通过在启动脚本中加入一行ulimit -n 1020000来实现。

修改配置后,记得重启进程,如果还是不行就重启一下系统。

然而怎么证明已经将进程的文件打开限制调整到了1020000呢,命令如下:

grep 'open files' /proc/$(cat /var/run/ssdb.pid)/limits
Max open files            1020000              1020000              files

第三步,配置leveldb模块的max_open_files【可忽略】

作者说,该参数几乎不可能导致问题,所以第三步一般来说可以忽略,但是既然官方文档并没有相关描述,就在此写一下。
它是限制leveldb模块的打开文件数的。

SSDB的leveldb的max_open_files

我们检测一下ssdb的日志

grep max_open_files /var/log/ssdb/log.txt                                                                                                                  
2016-07-10 04:11:46.731 [INFO ] ssdb-server.cpp(57): max_open_files   : 500

发现日志中的最大文件打开数max_open_files还是500,离我们预期的还远

瞬间凌乱了有木有?

好吧,老蔡没办法,只有读一下源码,发现是可配置的,在配置文件中,相应位置配置如下

leveldb:
        max_open_files: 1020000

再次重启进程,有没有发现整个世界都变美好了?

从Google到Alphabet,是从创造论到进化论。

关闭Google Wave,关闭Google Reader,以及即将关闭的Google Code,过去的很长一段时间内,Google都是在创造和关闭一个个项目中度过的。有人专门整理了一个列表,盘点出Google近几年一共关闭和替换的项目有21个。一度大家认为Google这个Web 1.0时代的巨头已经无法融入Web 2.0时代。 继续阅读“从Google到Alphabet,是从创造论到进化论。”

Mac OS X上使用Microsoft Sculpt Ergonomic鼠标的Windows键

老蔡昨天学习了下Karabiner的使用方法,并用Karabiner将小键盘映射成标准键值,也一起解决了微软鼠标上面Win键在Mac下无用的问题。下面来介绍一下如何用Karabiner改键把Microsoft Sculpt Ergonomic(微软小馒头)鼠标改成OS X下面的Mission Control。 继续阅读“Mac OS X上使用Microsoft Sculpt Ergonomic鼠标的Windows键”

Mac OS X中将失灵的小键盘映射成标准键盘(利用Karabiner)

用Mac OS X的时候,外接的键盘上面的小键盘(Key Pad)在一些程序上会失灵,比如iTerm2就会无法使用小键盘上面的数字回车加号减号星号斜杠。今天老蔡终于找到了一款可以解决这个问题的软件:Karabiner。 继续阅读“Mac OS X中将失灵的小键盘映射成标准键盘(利用Karabiner)”

降级linux内核,以Ubuntu 14.04为例,降级系统内核

升级linux内核,普遍使用系统提供的功能

sudo apt-get dist-upgrade

降级就比较麻烦了,需要我们自己手动安装。

下面老蔡以Ubuntu 14.04为例,从内核版本linux-headers-3.13.0-44降级到linux-headers-3.13.0-24为例,来演示下怎么降级linux内核。

继续阅读“降级linux内核,以Ubuntu 14.04为例,降级系统内核”

namesilo优惠码使用攻略:【namesilo长期$8左右】注册更新转入,不用再苦找godaddy优惠码

减1美元优惠码:
namesilo1dollar
首次转入、新注册、更新都可以用,倒2018年有效。

namesilo的链接是:https://www.namesilo.com/
如果觉得本文有帮助,可以访问[这个链接]去注册。

namesilo相比godaddy等域名注册服务商的特色:

  • 不用再为了低价折腾
  • 免费域名隐私保护

继续阅读“namesilo优惠码使用攻略:【namesilo长期$8左右】注册更新转入,不用再苦找godaddy优惠码”

清理Avast trusted CA根证书,直接删除Avast后的残留证书

一些不讲卫生的程序总会留下一些残留,比如杀毒软件。

Avast直接从应用程序扔进垃圾桶后会有一些残留的东西,真正的卸载应该重新运行安装包后运行卸载程序。

但是如果我们已经删除掉了应用程序,卸载程序已经没法清理Avast trusted CA根证书文件了,怎么办呢? 继续阅读“清理Avast trusted CA根证书,直接删除Avast后的残留证书”