系统/应用优化经验总结及资料整理

系统/应用优化经验总结及资料整理

一、系统性能瓶颈定位

Linux服务器性能评估与优化 http://wenku.baidu.com/view/f13ca069b84ae45c3b358c34.html
linux服务器的性能分析与优化 http://www.cnblogs.com/suihui/p/3799669.html
TCP相关知识总结 http://www.ttlsa.com/network-tech/tcp-related-knowledge-summary/

Linux查看机器负载 http://blog.csdn.net/szchtx/article/details/38455385
理解Linux系统负荷 http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html
linux服务器上tcp有大量time_wait状态的解决方法和原因解释 http://wuzhangshu927.blog.163.com/blog/static/11422468720139235119697/

线上操作与线上问题排查实战 https://mp.weixin.qq.com/s/ZZp0H5vIBNu47KsiJOju2Q

二、Nginx
2.1.error.log错误日志里面的信息

2.2.针对访问日志access.log进行问题查找
使用 awk 命令行快速分析 IBM HTTP Server 访问日志 http://www.ibm.com/developerworks/cn/linux/l-cn-awk-httplog/

#统计 请求时间超过10s的记录
awk '($NF > 10){print $0}' access.log

#统计每分钟请求数量
awk -F: '{count[$2":"$3]++} END {for (minute in count) print minute, count[minute]}' access.log | sort

#统计每小时请求数量
awk -F: '{count[$2]++} END {for (minute in count) print minute, count[minute]}' access.log | sort

统计访问最多的前十个 IP 地址
awk '{print $1}' /usr/local/tengine/logs/access.log |sort|uniq -c|sort -nr |head -10

查找并显示所有状态码为 404 的请求
awk '($9 ~ /404/)' access.log

统计所有状态码为 404 的请求
awk '($9 ~ /404/)' access.log | awk '{print $9,$7}' | sort


AWK程序设计语言 http://awk.readthedocs.org/en/latest/

2.3.Nginx参数配置
nginx优化 突破十万并发 http://blog.chinaunix.net/uid-20662363-id-3051474.html

2.4 通过Nginx,Tomcat访问日志(access log)记录请求耗时

http://www.cnblogs.com/huligong1234/p/4220017.html


三.MySQL
3.1数据库服务器健康分析
Mysql 高负载排查思路 http://dngood.blog.51cto.com/446195/1150031

3.2.开启慢查询slow_log,找到影响性能的SQL
pt-query-digest查询日志分析工具 http://blog.csdn.net/seteor/article/details/24017913
MySQL 慢查询日志分析及可视化结果 http://www.ttlsa.com/mysql/mysql-slow-query-log-analysis-and-visualization-of-results/
Mysql慢查询与分析 http://itopic.org/mysql-manchaxun-fenxi.html

3.3.性能优化
mysql性能优化-慢查询分析、优化索引和配置 http://blog.chinaunix.net/uid-11640640-id-3426908.html

MySQL性能优化的最佳20+条经验 http://www.cnblogs.com/AloneSword/p/3207372.html
mysql 性能优化方向 http://www.cnblogs.com/AloneSword/p/3207697.html
MySQL 5.6的72个新特性(译) http://lgdvsehome.blog.51cto.com/3360656/1180224
MySQL 5.6 新特性体验 http://blog.51cto.com/zt/494
mysql各个主要版本之间的差异. http://blog.csdn.net/z1988316/article/details/8095407
MySQL运行状态show status 详解 http://www.51yunwei.com/archives/102
MySQL的调优技巧 http://www.51yunwei.com/archives/66
MYSQL性能调优工具介绍 http://wenku.baidu.com/view/85af4ccfbb4cf7ec4afed0ad.html
MySQL性能调优介绍 http://wenku.baidu.com/view/ed254d48783e0912a2162a3c.html
MySQL优化—工欲善其事,必先利其器之EXPLAIN http://www.cnblogs.com/magialmoon/archive/2013/11/23/3439042.html
MySQL优化—工欲善其事,必先利其器之慢查询 http://www.cnblogs.com/zhanjindong/p/3472804.html
关于mysql中explain的那些事儿 http://ustb80.blog.51cto.com/6139482/1064261
MySQL松散索引扫描与紧凑索引扫描 http://mdba.cn/?p=516
MySQL5.6之use_index_extensions优化 http://mdba.cn/?p=538
mysql中用percona-toolkit监视死锁 http://www.51yunwei.com/archives/283
理解MySQL数据库覆盖索引 http://blog.haohtml.com/archives/13504

3.4.监控mysql每个ip的连接数
select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;


四、Tomcat
4.1各种参数配置server.xml
tomcat的maxThreads、acceptCount(最大线程数、最大排队数) http://www.cnblogs.com/baibaluo/archive/2011/08/23/2150305.html

Tomcat服务器-并发压力测试下调优注意点小结 http://blog.csdn.net/shuzui1985/article/details/8577233

五、应用程序
5.1数据连接池配置
连接池大小,maxPoolSize maxIdleTime initialPoolSize

druid,监控数据库访问性能 https://github.com/alibaba/druid

5.2数据库读写分离

5.3加入方法耗时统计代码


六、架构优化
目标:高可用负载均衡

基于keepalived 实现VIP转移,lvs,nginx的高可用
http://limian.blog.51cto.com/7542175/1301776

Nginx+Keepalived高可用架构平台
http://wgkgood.blog.51cto.com/1192594/1028529

Nginx+keepalived主主负载均衡服务器
http://yijiaxin.blog.51cto.com/2973774/844760

利用keepalived构建高可用MySQL-HA
http://blog.csdn.net/catoop/article/details/41285001

Haproxy、Keepalived双主高可用负载均衡
http://blog.chinaunix.net/uid-25266990-id-3989321.html

如何快速构建高可用集群(Keepalived+Haproxy+Nginx)
http://www.it165.net/admin/html/201405/2957.html

分布式ActiveMQ集群
http://shensy.iteye.com/blog/1752529

ActiveMQ JDBC 主从集群
http://88250.b3log.org/ActiveMQ-JDBC-Master-Slave


七、监控
zabbix http://www.ttlsa.com/html/tag/%E7%9B%91%E6%8E%A7/
http://www.ttlsa.com/html/tag/%E6%8A%A5%E8%AD%A6/

利用shell脚本来监控linux系统的负载与CPU占用情况
http://huangrs.blog.51cto.com/2677571/788379/


八、请求跟踪
Fiddler 教程 http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

抓包工具Fidder详解 http://blog.csdn.net/jiangwei0910410003/article/details/19806999

Android抓包方法(一)之Fiddler代理 http://www.cnblogs.com/findyou/p/3491014.html
Android抓包方法(二)之Tcpdump命令+Wireshark http://www.cnblogs.com/findyou/p/3491035.html
Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具 http://www.cnblogs.com/findyou/p/3491065.html

Wireshark基本介绍和学习TCP三次握手 http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html
Wireshark教程-中文版 http://wenku.baidu.com/view/fedba80016fc700abb68fce1.html

Burp Suite使用介绍(一) http://drops.wooyun.org/tools/1548
Burp Suite使用介绍(二) http://drops.wooyun.org/tools/1629
Burp Suite使用介绍(三) http://drops.wooyun.org/tips/2247
Burp Suite使用介绍(四) http://drops.wooyun.org/tips/2504

九、安全发布

nginx 灰度发布
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
灰度发布一般有三种方式 nginx+lua(根据IP或其他参数),nginx根据cookie分流,nginx 根据权重来分配
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=531464&id=4140473


十、相关视频教程

Linux 运维 http://edu.51cto.com/course/courseList/id-48.html
MySQL http://edu.51cto.com/course/courseList/id-17.html

高性能Linux服务器构建实战》一书官方配套视频
Drbd+Heartbeat+Lvs+Keepalived+Mysql可行性分析 http://edu.51cto.com/course/course_id-84.html
第23讲Drbd+Heartbeat+Lvs+Keepalived+Mysql可行性分析 ppt http://down.51cto.com/data/609477

原文地址:https://www.cnblogs.com/huligong1234/p/4264952.html