基于NoSQL内存数据库的Linux性能优化

前端之家收集整理的这篇文章主要介绍了基于NoSQL内存数据库的Linux性能优化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

基于Nosql内存数据库的Linux性能优化

发表于 2012-07-05 17:34| 9401次阅读| 来源 blog.bugsense.com| 18评论| 作者 BugSense

摘要或许你已经或多或少听说过某种Nosql数据库了,如果Nosql真的可以让我们的Web应用程序运行的更快、更具扩展性,我想我们可以去尝试,并尽可能发挥其威力。 我们不仅要选择适合自己口味的Nosql数据库,比如基于内存的Memcache或Redis,更适合企业级架构的Cassandra或HBase,同时,针对Linux服务器的优化也必不可...

或许你已经或多或少听说过某种Nosql数据库了,如果Nosql真的可以让我们的Web应用程序运行的更快、更具扩展性,我想我们可以去尝试,并尽可能发挥其威力。

我们不仅要选择适合自己口味的Nosql数据库,比如基于内存的Memcache或Redis,更适合企业级架构的Cassandra或HBase,同时,针对Linux服务器的优化也必不可少。

另外,还有一个问题需要探讨。我们在尝试Nosql数据库的时候,不应该排斥传统的关系型数据库,因为Nosql数据库永远不会取代传统的关系型数据库

Linux性能优化是一个很大的话题,涉及应用程序栈的层次架构,并非是一门精确的科学。本文是Linux性能优化系列文章的第一篇,着眼于Nosql内存数据库的Linux服务器性能优化。为此,我们将重构Linux服务器的内核。

也许你曾经亲自下载、编译过Linux内核,因此,在重构Linux内核之前,请不要忘记风险。

通过优化vanilla 3.x kernel中的如下选项可以应对我们所提到的工作负载挑战:

  • CONFIG_TASK_IO_ACCOUNTING:非常重要,允许您监控服务器进程的磁盘活动状态。
  • CONFIG_SLUB:Chris Lameter的内核对象缓存系统。相比SLAB而言,在管理内核内存分配方面效率更高。
  • CONFIG_JUMP_LABEL:内核分支优化,使内核速度更快。
  • CONFIG_NUMA and friends:适用于多核处理器,为内核启用NUMA功能,提升对高速缓存和内存的一致性支持
  • CONFIG_SPARSEMEM_VMEMMAP:针对pfn_to_page和page_to_pfn函数的稀疏内存优化选项。
  • CONFIG_TRANSPARENT_HUGEPAGE,CONFIG_COMPACTION,CONFIG_MIGRATION,CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS:这些参数可用于分配大于4KB的内存页,为内存饥饿进程加速分配内存。另外,它们还可以对内存页进行压缩和迁移,以对大型页面进行安全查询,并进一步减少内存碎片。
  • CONFIG_KSM:以MADV_MERGEABLE的方式取消内存页面标记是一个非常重要的机制,可以以终极的方式节省内存。
  • CONFIG_ZRAM:提供了一个基于内存的块设备。在此块设备中写入的数据会被压缩,并存储在内存中。这对临时存储空间非常有用(挂载在/tmp目录下),由于此特性用于临时区域,请将它构建为一个模块,并小心使用。
  • CONFIG_ZCACHE,CONFIG_ZSMALLOC & CONFIG_CLEANCACHE:一个内存页面压缩框架,可透明地压缩清洁页面和交换页面,从而为基于内存的工作负荷提供显著的性能提升。CleanCache使用ZCache框架对内存页面进行压缩,可以在高内存环境下有效地降低I/O请求。由于此特性用于临时区域,请谨慎使用。

当然,我们的优化是基于x86_64架构的。此外,另一些选项也会涉及到工作负荷的性能优化:

  • CONFIG_PERF_EVENTS:内核性能计数器,与perf等工具共同使用。尤其适用于深度性能监控。
  • CONFIG_PROFILING性能分析计数器,与OProfile等工具共同使用。与PERF_EVENTS同样重要。
  • HAVE_BPF_JIT:基于时间规则的编译器,用于基于PCAP(packet capture library)并使用伯克利包筛选器(Berkeley Packet Filter,如tcpdump)的用户工具,可以大幅提升复杂规则的处理性能。通过/proc/sys/net/core/bpf_jit_enable启用它。

我们可以选择最适合自己的选项,保存、编译并运行它,看看最后的结果是否能带给你成就感!

也许会有其它许多技术,可以帮助我们建立高效的基础架构,优化基于内存的工作负载(比如,RAMSter可以提供交换集群)。不论如何,我们都需对我们的内核优化结果进行测试,以构建一个稳定的生产环境。

简单的内核优化还远远不够。本文只是一个开始,以后我们将为大家介绍如何优化系统与计划作业的调度,以帮助我们自动完成大部分配置,不论是在虚拟环境还是物理环境!(张志平/编译)

原文链接Optimizing your Linux server for memory-based NoSQL databases

本文为CSDN编译整理,未经允许不得转载。如需转载请联系market@csdn.net

原文链接:https://www.f2er.com/nosql/203493.html

猜你在找的NoSQL相关文章