培养框架思想。此章不涉及高可用。
问题发现:ping traceroute nslookup telnet
思想:把用户一些的请求,往前推。
app层
有多少JDOC连接后端DB,进程池是多少,DB发现大量连接数解决。
硬件层
磁盘;I/O 性能,主要出现瓶颈;事务日志刷磁盘方式;
内存 buffer;
CPU 引擎限制;
网络层
replication等基于网络传输。
主节点,让一个库 不同步到从库:解决方案2种:
主库调整,节省I/O,速度快。
从库调整,binlog会传输到从库,但耗费带宽。
监控最好方法:主库写入,从库查询是否存在。
双网卡绑定做bond
iftop cacti zabbix 发送 接送 流量 即使发现网络瓶颈
系统层
ulimit 最大使用进程
系统的timewait超时时间
系统连接数对比 检查
snmpwalk 确认snmp正常,监控是否正常
远程连接端口更改
chattr 对关键文件加锁
linux进程理论最大数:4090 LDT GDT
iostat 监控磁盘I/O,即使发现DB 出现的I/O瓶颈
tcpdump 抓取数据包协议栈进行分析 nmap主机存活分析
DB层
三个层级:连接层;SQL层;存储层
Schema设计动态表,静态化
常规日常:检查数据量大小;索引;慢查询;
engine存储引擎状态分析
确认瓶颈: show log;
show global status;
show processlist;
show engine indoor status;
pt-ioprofile;
配置优化:innodb_buffer_pool_size;
innodb_data_file_path;
innodb_flush_log_at_trx_commit;
innodb_log_buffer_size;
innodb_log_file_size;
transaction_isolation;
MVCC并发控制中:读操作分为两类:快照读(snapshot read)与当前读(current read)
配置优化:其他
general_log (尽量不要打开),把每个语句都记录下来。
log_bin :打开但是会影响性能,但是不得不打开。
sync_binlog:事务一致性:0最不安全 1每个事务刷binlog
long_query_time :慢查询,0.01秒
log_slow_query :后期分析 哪些慢查询最多的
以下内容列入web监控列表,对增长量进行绘图。
SQL上线进行记录,带来数值不准确 可有依据查询
show global status like 'Innodb_buffer_pool_pages_dirty'; #当前的脏页数
show global status like 'Handler_rollback'; #内部ROLLBACK语句的数量。
show global status like 'Handler_write'; #在表内插入一行的请求数。
show global status like 'Handler_update'; #在表内更新一行的请求数
show global status like 'Innodb_buffer_pool_pages_total'; #缓冲池总大小(页数)
show global status like 'Innodb_data_reads'; #数据读总数量。
show global status like 'Innodb_data_writes'; #数据写总数量。
show global status like 'Innodb_data_written'; #至此已经写入的数据量(字节)
show global status like 'Innodb_log_write_requests'; #日志写请求数。
show global status like 'Innodb_log_writes'; #向日志文件的物理写数量
show global status like 'Open_tables'; #当前打开的表的数量。
转载于:https://blog.51cto.com/hexudong/1720425