二、cassandra集群性能调优

背景

trace数据的存储,日数据条数100亿+、日增1.8T数据量,同时要支持快速查询性能,前端可根据业务数据查询秒出。

cassandra配置优化(3.11.3)

1、修改/conf/cassandra-env.sh(修复3.11.3版本gc日志打印问题),补充如下内容:

  if [ ! -f "${CASSANDRA_HOME}/logs/gc.log" ];then
      touch ${CASSANDRA_HOME}/logs/gc.log
  fi

2、配置/conf/cassandra.yaml, 各配置项及说明如下:

  cluster_name:集群名称
  
  num_tokens:384  (默认256,根据集群内各实例性能按比例划分)
  
  authenticator:PasswordAuthenticator
  
  authorizer:CassandraAuthorizer
  (授权表只有一个复制因子,如果一台主机挂掉就可能不能登录,通过如下两步来修改复制因子为3
  a.登录数据库执行
  ALTER KEYSPACE system_auth WITH replication = {'class':'NetworkTopologyStrategy','sh':3}
  b.主机执行如下命令
  nodetool repair system_auth)
  
 data_file_directories:
           - /cassandra/data/disk1
           - /cassandra/data/disk2
   (数据文件目录,每个挂1T磁盘,共2T,多磁盘目的有两个:减少SSTABLE压缩次数,增加总IO能力)
   
  commitlog_diretory:/cassandra/commitlog
  (挂100G磁盘,最好SSD)
  
  hints_directory:/cassandra/hints
  (挂200G磁盘,根据允许单台实例宕机多长时间设定,注意,此盘不能撑满,否则会造成整个集群不可用)
  
  seeds:"xx.xx.xx.xx,xx.xx.xx.xx1"
  (种子节点,一般设置2台以上)
  
  listen_address:xx.xx.xx.xx
  (本机实例IP,用来链接其他节点)
  
  rpc_address:xx.xx.xx.xx
  (本机实例IP,客户端链接的监听地址)
  
  concurrent_reads:32
  (一般CPU核数的2倍)
  
  concurrent_writes:128
  (一般CPU核数的8倍)
  
  concurrent_counter_writes:32
  (一般CPU核数的2倍) 
  
  read_request_timeout_in_ms:30000 
  (协调器应为完成读操作等待多长时间)
  
  request_timeout_in_ms:35000
  (其他操作的默认超时)
  
  write_request_timeout_in_ms:5000
  (写超时,适量调大)
  
  commitlog_total_space_in_mb:12800
  (cleanup设置参数)
  
  cdc_total_space_in_mb:2125
  (cleanup设置参数)
  
  memtable_heap_space_in_mb:12288
  (堆内存32G)
  
  memtable_offheap_space_in_mb:12288
  (物理机总内存64G)
  
  memtable_allocation_type:offheap_objects
  
  streaming_socket_timeout_in_ms:345600000
  (保证扩容时session时间足够,迁移数据量很大需要更长迁移时间)
  
  compaction_throughput_mb_per_sec:0 
  
  enable_user_defined_functions:true
  
  user_function_timeout_policy:ignore
  
  user_defined_function_fail_timeout:1500
  
  concurrent_compactors:4
  (压缩线程,默认2,数据量大,压缩任务重的情况调整为4,特别是物理机有富余CPU能力的情况下)

多数据中心配置(根据情况选择配置)

1、配置/conf/cassandra.yaml

 endpoint_snitch:GossipingPropertyFileSnitch

2、配置/conf/cassandra-rackdc.properties

 dc=sz/sh  
 (根据节点所在机房配置)

3、建表空间时指定不同机房的复制因子,如

create keyspace "test_keyspace" with replication = {'class' : 'NetworkTopologyStrategy','sz' : 2,'sh' : 2};

JVM优化(JDK1.8)

主机:24核284G物理机
配置/conf/jvm.options
1,配置G1垃圾回收器

 a,注释掉CMS相关配置
 b,增加G1配置项
      -XX:+UseG1GC
      -XX:G1RSetUpdatingPauseTimePercent=5
      -XX:+PrintFlagsFinal
      -XX:MaxGCPauseMillis=500

2,内存:堆内存不要超过32G,否则性能反而下降

      -Xms32G
      -Xmx32G

3,其它

      -XX:+ExplicitGCInvokesConcurrent
      (nio使用的本地内存需要配置)

主机系统调优(Centos6.7)

1、时钟同步:不详述

2、TCP参数优化

   vim /etc/sysctl.conf
   补充内容
        net.core.rmem_max=16777216
        net.core.wmem_max=16777216
        net.core.rmem_default=16777216
        net.core.wmem_default=16777216
        net.core.optmem_max=40960
        net.ipv4.tcp_rmem=4096 87380 16777216
        net.ipv4.tcp_wmem=4096 87380 16777216
        
   执行  sysctl -p /etc/sysctl.conf

3、禁用zone_reclaim_mode

   查看:cat /proc/sys/vm/zone_reclaim_mode  0:关闭  1:开启
   
   设置:vim /etc/sysctl.conf   
              补充  vm.zone_reclaim_mode=0
              执行  sysctl -p /etc/sysctl.conf

4、资源限制放开

    vim /etc/security/limits.conf, 不同操作系统可能不同
    *               -    nofile   100000
    *               -    nproc    32768
    *               -    memlock   unlimited
    *               -    as              unlimited
   
   查看设置,重新登录系统
   ulimit -a 或  cat /proc/{pid}/limits

5、禁用swap

  vim /etc/sysctl.conf  设置 vm.swappiness = 0 并执行 sysctl -p /etc/sysctl.conf  , swapoff -a
  vim /etc/fstab 去掉swap挂载,将所有的swap文件从/etc/fstab中移除

6、线程最大连接数

  vim /etc/sysctl.conf
  添加如下配置
  vm.max_map_count = 1048575
  执行:sysctl -p /etc/sysctl.conf

7、关闭透明分页hugePages
说明:对数据库(oracle/mongoDb/cassandra)需要关闭此功能

 a.查看是否启用: 
      cat /sys/kernel/mm/transparent_hugepage/defrag
      cat /sys/kernel/mm/transparent_hugepage/enabled
      显示: [always] madvise never  则表示开启
      或使用:grep Huge /proc/meminfo 也可以查看是否启用
 
 b.禁用:
      vim /etc/rc.d/rc.local
      增加如下内容
           if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo     never > /sys/kernel/mm/transparent_hugepage/enabled
           fi
           if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag
           fi
      保存退出,然后赋予rc.local文件执行权限
          chmod +x /etc/rc.d/rc.local
c.执行如下命令立即生效
          echo never > /sys/kernel/mm/transparent_hugepage/defrag;
          echo never > /sys/kernel/mm/transparent_hugepage/enabled;
d.查看 cat /sys/kernel/mm/transparent_hugepage/defrag (enabled)
          结果显示 always madvise [never] 表示已禁用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cassandra 是一个开源的分布式数据库系统,它被设计成高度可扩展、高性能的系统,用于处理大规模数据集。在 Cassandra 中,数据分布在整个集群中的多个节点上,每个节点都具有相同的功能和数据副本。 下面是一些关于 Cassandra 集群的常见操作和概念: 1. 节点(Node):Cassandra 集群中的每个服务器都被称为节点。每个节点都可以独立地处理读写请求,并且都存储了部分数据的副本。 2. 数据中心(Datacenter):Cassandra 集群可以由多个数据中心组成。数据中心是逻辑上划分的部分,每个数据中心可以包含一个或多个节点。 3. 复制因子(Replication Factor):复制因子是指每个数据中心中为每个数据副本存储的节点数量。它决定了数据在集群中的冗余程度和可靠性。 4. 键空间(Keyspace):键空间是 Cassandra 中存储数据的顶层容器,类似于传统数据库中的数据库。它定义了数据的复制策略、复制因子等。 5. 分区(Partition):Cassandra 使用分区键将数据分布在不同的节点上。分区键是用于确定数据在集群中哪个节点存储的关键属性。 6. 一致性级别(Consistency Level):一致性级别定义了读写操作需要满足的数据一致性要求。Cassandra 提供了不同的一致性级别供选择,例如 ONE、QUORUM、ALL 等。 7. 启动和管理节点:要启动和管理 Cassandra 集群的节点,可以使用 Cassandra 提供的命令行工具 `cassandra`、`nodetool` 和 `cqlsh`。些工具提供了管理节点、执行查询和维护集群的功能。 请注意,Cassandra 集群的部署和管理是一个复杂的主题,涉及到许多方面的配置和调优。在实际应用中,建议参考官方文档或专业资源来进行详细了解和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值