Linux网站打开慢之mtr工具探测分析

一个Web应用,通过浏览器来访问,发现页面加载很慢,我们可以用下面的步骤来初步排查问题:
一、初步排查方法
0、打开浏览器调试模式,简单看看是否有报错,加载明显慢的资源。【如有,代码优化】
1、ping域名,看解析是否正常。
2、切换其他网络,比如4G,查看是否正常。或者借助第三方网络测试工具,测试全国其他节点
http://tool.chinaz.com/speedtest.aspx
3、登陆服务器,查看负载、带宽是否正常。
继续阅读

查看TCP端口监听程序netstat和lsof差异

经常需要查看服务器上端口(例如9006端口)占用情况,以及是被哪些程序监听的。Linux上有两个工具都可以完成我们的任务: netstat和lsof。下面就分别介绍下这两个工具的查看方法。

一、netstat
0、功能:查看网络状态(具体可见man netstat)。
1、安装:一般发行版Linux都自带,如果没有,Centos下可通过如下命令安装。

yum -y install net-tools

继续阅读

压测工具之ab

一、介绍
0、导语
最早接触的压测工具就是ab, ab是ApacheBench的简称,是Apache HTTP服务器基准测试工具,当然也可以测试其他服务器。

1、安装
Linux和Mac系统一般自带Apache, 所以可以直接在终端使用ab命令。Windows系统或其他没有安装的系统,请自行安装。

2、ab参数
ab的具体描述和参数,请参考官网ab, 或者直接man ab查看。
继续阅读

PHP二维数组合并排重的两种方式

业务中需要统计一段时间投票独立的用户数,涉及到数组的排重,用传统array_unique()发现,当数据量达到百万级后, 设置的1G内存都耗尽了,仍然没有统计完。而用array_flip()发现不仅可以统计出来,而且更快。

之前这两种方式没有比较过,数据量小的时候也没有遇到问题,发现差异,一直混用。特记录下两种方式。
继续阅读

shell脚本实用初级入门

做为开发同学,实际工作中熟练使用大部分shell命令就能完成绝大多数事情,需要编写shell脚本的场景(机会)并不多。一般不会系统去学习shell脚本,这就导致偶尔要写一个shell脚本,往往觉得很费劲,比如自动登陆服务器、分发文件…

实际上系统介绍shell脚本的资料很少(包括书籍和网络),没有找到官网,网上各种教程也是众说纷纭,特整理一份让开发很快能熟悉的文档。

Shell是一种脚本编程语言,类似PHP、Python。可以简洁地表达复杂的操作(用很少的代码实现强大的功能)。
继续阅读

SVN常用命令整理

经常用Git, 偶然碰到SVN管理的项目,往往又需要从头熟悉一遍SVN的命令,特记录下常用的SVN命令。

注:以下记录基于macOs自带svn命令。
一、svn管理项目开发。
0、安装svn colordiff。
工欲善其事必先利其器,命令行下的colordiff是非常有必要的

brew install colordiff
svn diff | colordiff 出现色彩

或者修改配置, 直接使用svn diff

echo 'diff-cmd = colordiff' >> ~/.subversion/config 

当然设置别名也行
继续阅读

Git常用命令整理二(Git托管项目)

Git原理以及完整命令这里不做介绍,仅介绍实际工作中用到的一些命令。

分支命名

0、自带master分支不做赘述,一般新建一个名为develop的分支作为开发分支。
1、单人开发的时候可以直接在develop上开发,然后合并到master上。
2、多人开发的时候以develop分支新建功能分支(feature_功能_日期),例如feature_login_20181210,feature_user_20181210,定期将功能分支合并到develop, 然后在将develop反向合并到功能分支,这样可以调用不通功能分支上的方法。最后把功能分支都合并到develop, develop再合并到master。
3、平常项目维护可以命名新分支hotfix_功能名_日期。例如: hotfix_user_20181210。
4、平常项目bug修复可以命名新分支bugfix_功能名_日期。例如: bugfix_user_20181210。
继续阅读

PHP输出缓冲(output buffer)初级理解和应用

声明:不同的PHP版本,操作系统环境,Webserver, 参数默认值及配置可能会有差异。本文基于的环境如下:
PHP version: 7.2.8; Nginx version 1.14.0
Mac OS version: 10.10.5; Chrome version: 69.0;
Safari version: 8.0.8

第一部分 基础概念

计算机缓冲区(buffer)
计算机中暂时存放输出或输入信息的内存区域。缓和高速部件和低速部件之间通信速度不匹配的矛盾。缓冲(buffer)和缓存(cache)之间还是有本质区别的【点击查看区别】。
继续阅读

awk常用形式整理

这里并不打算介绍awk,也不是简明教程,如果想看教程,推荐耗子的文章《AWK 简明教程》

以下展示为使用过的场景整理:
0、对齐输出部分列

$ cat 20180928.log
BANG|2018-09-28 20:00:02|||0|not same|topic 中国新说唱|md5 70a33ddbaae24c83d9bf1b18786d17cf|old read 6743582553 | new read 6743903396 | old mention 34576698| new mention 34576697 |read_inc: 320843| menton_inc: -1
BANG|2018-09-28 20:00:02|||0|not same|topic 明日之子|md5 470c7ea352169bc4cf766cc10126e3d9|old read 19442104721 | new read 19442126259 | old mention 87717229| new mention 87979643 |read_inc: 21538| menton_inc: 262414
BANG|2018-09-28 20:00:02|||0|the same|topic 综艺ELEVEN|md5 61eeebb92bc7a9d216633e1e1604a0a3|old read 0 | new read 0 | old mention 0| new mention 0
BANG|2018-09-28 20:00:02|||0|not same|topic 加油好身材|md5 b0e3dcf03ab2c4bdb916f083c3ecd861|old read 90588874 | new read 92111031 | old mention 104225| new mention 104224 |read_inc: 1522157| menton_inc: -1
BANG|2018-09-28 20:00:02|||0|not same|topic 这就是灌篮|md5 d4da257e8be25298e2c4b245e47632b8|old read 2694756739 | new read 2694765957 | old mention 5403696| new mention 5403696 |read_inc: 9218| menton_inc: 0
BANG|2018-09-28 20:00:02|||0|not same|topic 我在大理寺当宠物|md5 ca932540077f8c959187f06c2ecf9131|old read 71751204 | new read 71750514 | old mention 89286| new mention 89285 |read_inc: -690| menton_inc: -1
BANG|2018-09-28 20:00:02|||0|not same|topic 优酷秋集|md5 edca63655c351a1a503c1bd4d90b4505|old read 906746383 | new read 913171740 | old mention 5868201| new mention 5958567 |read_inc: 6425357| menton_inc: 90366
BANG|2018-09-28 20:00:02|||0|not same|topic 凉生,我们可不可以不忧伤|md5 c47f14a0d063e103d3cfbab61ac29231|old read 502732993 | new read 502732992 | old mention 502829| new mention 502829 |read_inc: -1| menton_inc: 0
BANG|2018-09-28 20:00:02|||0|not same|topic 橙红年代|md5 b5bef8afd1e7fa2fd6effd1d7b69947c|old read 859229830 | new read 859229076 | old mention 2828826| new mention 2828826 |read_inc: -754| menton_inc: 0
BANG|2018-09-28 20:00:02|||0|not same|topic 相声有新人|md5 222d028fd017cb630fd58f951d956f8f|old read 346645090 | new read 347368858 | old mention 521064| new mention 521065 |read_inc: 723768| menton_inc: 1

使用awk展示部分列,并对齐输出

$ awk -F '|' '{print $2, $7, $13, $14}' 20180928.log |column -t

1、多个分隔符

$ cat access.log
2017-03-24 15:23:18|x aaa|AA\n
2017-03-24 15:24:15|x bbb|BB\n
2017-03-25 22:18:55|x ccc|CC\n
$ grep '2017-03-24' | awk -F ['=|'] '{print $3}' awk.log
aaa
bbb
ccc