No.3
1、查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
ps -ef | grep httpd | wc -l
返回结果示例:
1388
表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整
2、查看Apache的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
3、网站访问太慢,可能性有哪些
一、网络问题
1、双线机房或分布式部署,动态DNS,需要考虑成本
2、客户端和机房所在网络情况 二、前端问题
1、浏览器太烂
2、页面设计不佳(dom太多、js有问题等) 三、服务端问题
1、负载,CPU, 网络,内存,磁盘空间等使用情况,日志切割。如果单台服务器性能受限,考虑调整为分布式架构,如nginx转发,DB分库分表等
2、用Xdebug,Webgrind等调试工具调试源码
检查webserver日志中的响应时间
如果服务器整体负载不高,但PHP的数据返回时间过长,在PHP代码中分段输出处理时间
如果是高访问量的在线调试,一般选取一定比例记录日志,防止日志过多带来的额外系统开销
调试指导思想:逐步缩小范围,定位、优化
平常开发原则:
编写代码注重效率,尽可能占用更少的资源
缓存复杂和耗时运算的结果
用apc或者xcache等缓存PHP的opcode
能异步处理的任务不要马上处理,如发邮件
依据资源情况对FastCGI配置合适的参数
负载均衡器设好阀值,不要无限制的给后端压力
接口api设置过期时间,1秒内等
3、读取慢
检查:慢查询日志;
show processlist 查看当前DB状态,看哪些请求停留较多
top查看mysql进程的开销
代码中记录SQL和执行时间
解决:
手动执行可疑SQL(注意排除query cache的影响),用explain,profile等工具分析SQL性能
再考虑是否优化索引,或者分库分表,或者增加缓存
写入慢
检查:除读取慢的检查方法外,还有
iostat 检查磁盘IO
查看mysql binlog的写入速率
解决:增加缓存,分库分表,优化索引,从业务逻辑上考虑减少DB操作,合并写入 四、其他问题
1、http请求过多
2、Keep-Alive
3、图像过大,没有经过压缩
4、http的keep-alive
https://www.cnblogs.com/freefish12/p/5394876.html
5、
文件如下:
a,b,c,d,1,2,3
e,f,g,h,2,3,4
1,2,3,4,3,4,4
4,5,5
b,d,1,2,3
... 计算倒数第三列的累加值: awk -F ',' '{a+=$(NF-2)}END{print a}' 1.txt
6、nginx工作原理和优化
http://blog.csdn.net/hguisu/article/details/8930668
随机推荐
- 【转】hibernate 延迟加载
Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载.hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hiberna ...
- webpack4 系列教程(十五):开发模式与webpack-dev-server
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...
- datetime模块+calendar模块
datetime: """ 模块中的类: datatime 同时有时间和日期 timedelta 主要用于计算时间的跨度 tzinfo 时区相关 time 只关注时间 d ...
- mapper代理方式开发
使用mapper代理方式开发: 需要编写mapper接口,UserMapper.java需要编写映射文件,UserMapper.xml需要遵循一些开发规范,mybatis便可以自动生成mapper接口 ...
- 2018-11-23 手工翻译Vue.js源码:尝试重命名标识符与文本
续前文: 手工翻译Vue.js源码第一步:14个文件重命名 对core/instance/索引中的变量, 方法进行重命名如下(题图): import { 混入初始化 } from './初始化' im ...
- 也说Socket
网上有大量socket相关文章,茫茫多,大多交代不清,最近自我整理了一下socket相关知识,附加了大量代码注释,先看效果. 上代码,客户端: Socket socket1 = null;//一个全局 ...
- 环信easeui集成:坑总结2018(二)
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何发送视频功能 2.未完待续.. ------------------- ...
- Android为TV端助力 Service 两种启动方式的区别
服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务.这两个方法都 可以启动Service,但是它们的使用场合有所不同.使 ...
- Android IPC机制(二)用Messenger进行进程间通信
Messenger可以在不同进程中传递Message对象,我们在Message中加入我们想要传的数据就可以在进程间的进行数据传递了.Messenger是一种轻量级的IPC方案并对AIDL 进行了封装, ...
- QTP入门——玩玩小飞机
1.什么是QTP? 百度百科中对QTP是这么介绍的: ——”QTP是QuickTest Professional的简称,是一种自动化测试工具.使用QTP的目的是想用它来执行重复的自动化测试,主要是用于 ...