欢迎光临
我们一直在努力

2020年04月的文章

第7页
记一次LVS/Nginx环境下的访问控制-IT技术资讯
LVS

记一次LVS/Nginx环境下的访问控制

admin阅读(1147)评论(0)赞(2)

偶然间,我发现 Graphite 显示服务器网卡流量呈锯齿状,于是查了一下 Nginx 日志,发现有人在周期性抓我们的接口数据。我这爆脾气自然不能容忍这种行径。   简单分析一下访问日志,很容易就能拿到了可疑的 IP 段,直接用 ...

Linux

监控进程

admin阅读(1387)评论(0)赞(2)

有时候,进程突然终止服务,可能是没有资源了,也可能是意外,比如说:因为 OOM 被杀;或者由于 BUG 导致崩溃;亦或者误操作等等,此时,我们需要重新启动进程。   实际上,Linux 本身的初始化系统能实现简单的功能,无论是老牌...

Nginx

Nginx带宽控制

admin阅读(1142)评论(0)赞(0)

有个老项目,通过 Squid 提供文件下载功能,利用 delay_parameters 实现带宽控制,问题是我玩不转 Squid,于是盘算着是不是能在 Nginx 里找到类似的功能。   好消息是 Nginx 提供了 limit_...

Redis

如何统计Redis中各种数据的大小

admin阅读(1171)评论(0)赞(0)

UPDATED:如果版本够,记得试试 redis-cli 的 bigkeys 选项 如果 MySQL 数据库比较大的话,我们很容易就能查出是哪些表占用的空间;不过如果 Redis 内存比较大的话,我们就不太容易查出是哪些(种)键占用的空间了...

Where SLOW-IT技术资讯
TCP

Where SLOW

admin阅读(1214)评论(0)赞(0)

前些天翻了翻「Wireshark数据包分析实战」,总结了一下汇聚成本文。   所谓慢,通常只是整体的主观感受,我们真正应该关心的是哪个环节最耗时? Where Slow 判断原则按上图所示: 如果 TCP 握手或 ACK 耗时长,...

Linux

如何安装xsscrapy

admin阅读(1117)评论(0)赞(1)

我不想攻击别人,但我更不想被别人攻击。于是乎安全扫描变得格外重要,如此才能防患于未然,xsscrapy 就是这样一个漏洞检测工具。   既然这个工具是用 Python 写的,那么理论上安装应该是一件非常简单的事情: shell&g...

关于FIN_WAIT1-IT技术资讯
TCP

关于FIN_WAIT1

admin阅读(1303)评论(0)赞(2)

前些天,一堆人在 TCPCopy 社区里闲扯蛋,有人提了一个问题:FIN_WAIT1 能持续多久?引发了一场讨论,期间我得到斌哥和多位朋友的点化,受益良多。   让我们热热身,通过一张旧图来回忆一下 TCP 关闭连接时的情况: T...

Poor Man PHP Profiler-IT技术资讯
php

Poor Man PHP Profiler

admin阅读(1203)评论(0)赞(3)

说起 Profiler,老派的 PHP 程序员会选 XDebug,新派的 PHP 程序员会选 Xhprof,不过我们公司的服务器上都没装,于是我写了这个「Poor Man PHP Profiler」。   既然不用 XDebug ...

PHP优化杂烩-IT技术资讯
php

PHP优化杂烩

admin阅读(1118)评论(0)赞(2)

讲 PHP 优化的文章往往都是教大家如何编写高效的代码,本文打算从另一个角度来讨论问题,教大家如何配置高效的环境,如此同样能够达到优化的目的。   pool 一个让人沮丧的消息是绝大多数 PHP 程序员都忽视了池的价值。这里所说的...

TCP

一次优化引发的血案

admin阅读(1131)评论(0)赞(3)

前些天一个Nginx+PHP项目上线后遭遇了性能问题,于是打算练练手,因为代码并不是我亲自写的,所以决定从系统层面入手看看能否做一些粗线条的优化。   首先,我发现服务的Backlog设置过小,可以通过ss命令查询Send-Q来确...

DNS

简易云端Hosts的构建

admin阅读(1220)评论(0)赞(0)

如果大家记忆力不太差的话,那么应该会记得前段时间发生的全国性DNS解析故障:很多顶级域名被解析到了IP地址 「65.49.2.178」,导致中国互联网瘫痪了几个小时。不过在那起事件里一些移动客户端应用得以幸免,其原因在于它们使用了云端Hos...

Nginx缓存解决方案:SRCache-IT技术资讯
Nginx

Nginx缓存解决方案:SRCache

admin阅读(1166)评论(0)赞(1)

前些天帮别人优化PHP程序,搞得灰头土脸,最后黔驴技穷开启了FastCGI Cache,算是勉强应付过去了吧。不过FastCGI Cache不支持分布式缓存,当服务器很多的时候,冗余的浪费将非常严重,此外还有数据一致性问题,所以它只是一个粗...

Web框架与太阳系-IT技术资讯
ihh

Web框架与太阳系

admin阅读(1071)评论(0)赞(1)

古语有云:工欲善其事,必先利其器。对于Web开发亦是如此,不过现在的Web框架实在是太多了!以PHP为例,有CakePHP、CodeIgniter、Symfony,Zend,Yii等等,到底谁是最合适的?事实上过多的选择往往会让人陷入「乱花...

TCP

监控Netstat中的TCP数据

admin阅读(1769)评论(0)赞(0)

通过netstat命令,我们能获取TCP数据,监控它们有助于了解系统。   如果netstat版本比较老的话,那么运行时可能会遇到下面的错误信息: error parsing /proc/net/netstat: Success ...

Shell

一个Shell工具:jsondiff.sh

admin阅读(1409)评论(0)赞(2)

我最近忙着重构一个历史项目,不过由于客观条件所限,没有测试用例可用,以至于我不得不通过人肉对比新旧服务器的结果集是否一致来判断对错。既然说懒惰是程序员的美德,所以我想还是写一个工具吧,加之结果集为JSON,于是便有了jsondiff.sh。...

HTTP

一个HTTP小问题

admin阅读(1168)评论(0)赞(1)

同事叫我帮忙解释一个问题:一个PHP生成的重定向请求,在Nginx日志里产生两种截然不同的记录:一种响应体大小是零个字节;另一种响应体大小是五个字节。   现在年纪大了,面对问题时的嗅觉不再灵敏,第一感觉零是正确的,心想是不是重定...

Rsyslog

跟我学Rsyslog

admin阅读(1340)评论(0)赞(1)

在数据为王的时代,日志管理是一个绕不开的话题,相应的开源软件有不少,比如热门的三件套:Logstash、ElasticSearch、Kibana,可惜我对这些高大上的东西往往心存敬畏,不敢轻易触碰,相比较而言,我更喜欢能够快速上手的东西。 ...

Redis

如何在Redis里按模式删除数据

admin阅读(1091)评论(0)赞(1)

一台Redis服务器在很短的时间里消耗了几十个G的内存,最终因为SWAP而宕机。因为这台服务器的社会背景比较复杂,所以一时无法判断犯罪嫌疑人到底是谁。   最开始的直觉是认为肯定有人保存了大体积的数据,于是问题就变成了找出哪些键占...

为什么「0.1+0.2!=0.3」,而「0.1+0.3==0.4」-IT技术资讯
ihh

为什么「0.1+0.2!=0.3」,而「0.1+0.3==0.4」

admin阅读(1219)评论(0)赞(3)

我们都知道潮汐现象,上学的时候老师多半简单解释一句「月球引力所致」就算了,而我们也都觉得自己明白了,但是凡事就怕琢磨:如果涨潮仅仅是月球对地球万有引力的作用结果的话,那么每天同一个地点,应该仅仅在距离月球最近引力最强的时候有一次涨潮才对,但...

OpenResty与模块-IT技术资讯
OpenResty

OpenResty与模块

admin阅读(1229)评论(0)赞(1)

Lua 中没有常见面向对象语言中所谓类的概念,取而代之使用模块来组织管理代码。关于模块的基础知识大家可以参考「OpenResty 最佳实战」,本文聊点别的。   如何实现一个模块呢?假设我们要实现一个不太安全的房奴模块(house...

使用Fiddler把请求从HTTPS改成HTTP-IT技术资讯
ihh

使用Fiddler把请求从HTTPS改成HTTP

admin阅读(1229)评论(0)赞(2)

为什么我要把请求从 HTTPS 改成 HTTP?这是因为生产环境是 HTTPS 的,而测试环境却是 HTTP 的,我要在测试环境测试应用,所以需要把请求从 HTTPS 改成 HTTP。为什么我不在测试环境部署一套 HTTPS 证书?这是因为...

ihh

如何在环境中存储配置

admin阅读(1160)评论(0)赞(1)

关于「在环境中存储配置」,是 The Twelve-Factor App 倡导的方法论之一。通常,应用的配置在不同环境(预发布、生产环境、开发环境等等)间会有很大差异,比如说数据库的用户名密码等等配置,通过把配置和代码分离,我们可以保证部署...

ihh

被忽视的time命令

admin阅读(1141)评论(0)赞(0)

如果要选 Linux 下最容易被忽视的命令,time 应该算一个。简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;...

golang

Go语言内置包之strconv

admin阅读(1205)评论(0)赞(0)

Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。 strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi()、Itia()、parse系列、format系列、appen...

golang

Go语言标准库之http/template

admin阅读(1166)评论(0)赞(0)

html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。 模板与渲染 在一些前后端...