使用 systemd 限制系统资源的使用

简单介绍 在基于 Linux-3.x 内核版本的很多发行版都提供了 Systemd 来管理系统和服务. 同时也将 cgroup 功能加到了 slice, scope 和 service 三个单元中, 详见 sec-Default_Cgroup_Hierarchies. 基于这些特性我们可以很方便的通过 systemd 来限制服务或者进程对系统资源的使用, 这在单主机多服务的场景下会很有用. 下面则以 MySQL 服务为例介绍如何使用 systemd 限制资源的使用,...

TokuDB 修改分区表耗时长问题处理

问题说明 在之前的文章[TokuDB 使用简单说明]/tokudb-%E7%89%B9%E6%80%A7%E6%A6%82%E8%A7%88/)中简单介绍了如何使用 TokuDB, 其固有的特性很适合存储日志类的需求, 不过近期在修改 TokuDB 分区表的时候出现操作时间较长的提示, 业务端也同时出现响应时间较长的请求. 如下所示: # bash text_data_partition.sh 127.0.0.1 3311 text_base text_data 2018_12_05_14_55_39 [info] alter maxvalue of the partitions 2018_12_05_14_55_39...

简单记录 mongodb 主从模式的恢复过程

mongodb 中 repSet 集群模式提供了很好的高可用架构, 不过很多情况下, 比如异地原因等我们还是会采用主从模式进行服务, 主从模式主要依靠 oplog 来进行数据的传输, 在做恢复或者新增加一个 slave 的时候就主要通过 oplog 进行增量同步. 下面则简单记录一个主从恢复的过程. 备份 mongodb 数据 mongodump --host=master_host --port=master_port --oplog --numParallelCollections=4 --out /data/mongo_data...

Centos 系统 SLAB dentry 过高引起系统卡顿分析处理

问题说明 近期几台主机系统都出现卡顿几秒甚至十几秒的现象, 期间没有网络问题. 每次出现卡顿现象的时间也不固定. 服务请求数和流量也没有异常变化, 我们使用 cpu_capture 状态脚本解析 top 命令的输出, 正常情况几百毫秒即可输出, 在异常时耗时很长, 如下可以看到耗时接近 15s: begin time: 2018-09-24T23:26:25.347257868 end time: 2018-09-24T23:26:40.062807607 Total cpu usage: 241.8 373...

使用 repl_mysql 监控表数据变更

介绍 repl_mysql 在 replication 的基础上增加了更多的功能选项, 基于此可以仅关注指定选项的表的更新. 由于原理同 MySQL 的主从复制, replication 即通过伪造 slave 的方式接收 MySQL master 端的所有更新操作, 不同于真实的 slave, repl_mysql 不需要重新组织接收到的数据到 relay log 日志, 也不用重放 relay...

有效升级 MySQL 表的 ip 字段

在文章 [IPv6 使用及注意事项]/ipv6-%E4%BD%BF%E7%94%A8%E5%8F%8A%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/) 中我们提到了应用程序如果要支持 IPv6, 需要关注相关数据库的修改, 不过由于业务设计的不同, 有些程序可能使用 char, varchar 等存储 ip 字符串, 有些程序也可能考虑到索引效率使用 int unsigned 存储 ip 的整形. 不过对于 IPv6 地址, 由于其 128 bit...

IPv6 使用及注意事项

本文介绍常用工具及软件使用 ipv6 时候的注意事项, 以及应用程序支持 ipv6 需要进行的检查列表. 下文中提到的混合服务表示工具可以同时服务 ipv4 和 ipv6, 很多软件在代码层做了 AF_INET 和 AF_INET6 标识的判断, 数据可以复用同一个 socket, 比如下面提到的 nginx, tomcat, resin 这三个软件是混合服务的, 即便 ipv6 请求连接了...

使用 usql 连接各种不同的数据库

usql 介绍 usql 是一个统一的数据库连接工具, 目前支持常用的各种数据库, 包括 PostgreSQL, MySQL, Oracle, SQLite3, Microsoft SQL Server 以及最近几年出现的较新的数据库, 比如 clickhouse, Cassandra 等, 详见 database-support. 通常情况下 usql 以 usql [options]...

分组处理方式简单介绍

介绍 在一些特定的业务中, 我们更希望成批的处理一些数据而不是来一条处理一条, 比如消息队列处理等场景, 可以一次取几百个一次处理以提高处理能力, 不过这样也带来另一个问题, 生产者短时间内不能生产几百个的时候我们应该怎么处理. 一些软件工具的 client 驱动可能会提供一些定时器的功能, 比如可以处理指定时间内(比如 2s)的数据. 这种情况下我们就可以通过几种方式批量处理数据, 达到指定数量时处理, 达到指定时间时处理, 还有一种变通的方式则是每次批量处理前检查下待处理数据的数量, 取出一定数量的数据即可. 下面的介绍主要是前面两种方式. 计时器系统调用 我们可以通过计时器系统调用简单实现上述提到的第二种方式 - 达到指定时间时处理. 在 linux 系统中,...

centos7 系统 df hang 问题处理说明

问题描述 近期陆续碰到几台主机 df 卡住的问题, 监控程序由于超时引起相关的警报, 系统环境和 strace df 如下所示: kernel-3.10.0-514.21.2 systemd-219-57 strace 显示卡在了 /proc/sys/fs/binfmt_misc 状态中: # strace df execve("/usr/bin/df", ["df"], [/* 29 vars */]) =...