fastdb 共享内存模式下的限制
来源:互联网 发布:男士服装搭配 知乎 编辑:程序博客网 时间:2024/04/29 05:28
最近项目中使用了fast db,为了提高访问效率,fast db采用diskless模式编译。
共享内存的最大尺寸受系统参数限制,
下面数据是在Linux im_monitor 2.6.9-42.ELsmp 下的缺省值:
cat /proc/sys/kernel/shmmax
33554432
默认大小都是32M;
同样fastdb里的代码也用32M作为容量上限,而且一旦越界,不再进行扩容;进程退出;
具体的代码行是:inc/database.h 文件里
#ifdef DISKLESS_CONFIGURATION
// In diskless confiuration database can not be reallocated
const size_t dbDefaultInitDatabaseSize = 32*1024*1024;
#else
const size_t dbDefaultInitDatabaseSize = 1024*1024;
#endif
为了支持fastdb在更大的共享内存下工作,需要做两点修改:
1、系统参数的修改
修改 /etc/sysctl.cfg,添加入下内容:
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 1073741824
sysctl -p 执行;
或者echo 1073741824 > /proc/sys/kernel/shmmax ,注意需要加到启动脚本里去;
2、修改fastdb源代码
const size_t dbDefaultInitDatabaseSize = 32*1024*1024;修改为合适的数值;比如32->1024
鉴于共享内存大小限制,以及不能动态扩容:当容量超过限制,进程不能进行再分配,直接退出,对于大容量的系统,对fastdb的数据使用超过2G, 或者总的虚拟内存使用量可能接近3G, 则不建议在32位操作系统中使用共享内存方式的fastdb,可以改用文件方式,实际上对于文件方式,也是通过mmap的方式来实现,对于io的写基本等同于内存效率,且可以在预分配的基础上扩容。
- fastdb 共享内存模式下的限制
- 修改共享内存的最大值限制
- 内存数据库fastdb的性能测试报告
- 内存数据库fastdb的使用研究报告
- 内存数据库fastdb的使用研究报告
- FastDB 高效率的内存数据库系统
- 内存数据库fastdb的使用研究报告
- 内存数据库fastdb的使用研究报告
- 内存数据库fastdb的使用研究报告
- FastDB不同访问模式带来的影响
- FastDB不同访问模式带来的影响
- Fastdb 几个模式之间的共用
- 关于fastdb打开模式的说明
- linux 下的内存共享
- Linux下的共享内存
- Linux 下的共享内存
- FastDB内存数据库API
- FastDB内存数据库API
- 访问IIS元数据库失败
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateProcess error
- Enterprise Architect 8之数据建模(创建检查约束)
- COM技术初探(一)
- wmic 监视磁盘空间的批命令
- fastdb 共享内存模式下的限制
- 遍历PCI设备
- javascript笔记:深入分析javascript里对象的创建(上)(转自:http://www.cnblogs.com/sharpxiajun/archive/2011/10/15/22128)
- 关于网络创业:投资者所看到的现状
- USB系列之一:列出你的USB设备
- 2011.10.15
- iphone开发之多线程NSThread和NSInvocationOperation
- rundll32 应用
- 解决gentoo系统无声音,Alsamixer默认静音导致的