东拉西扯

张戈博客正式启用全新个性域名:zhang.ge

Docker

Nexus3最佳实践系列:搭建Docker私有仓库

Docker

零门槛!基于Docker快速部署ES集群

网站建设

分享张戈博客的WordPress优化方案,缓解国内云服务器配置低下的问题

Docker

Docker新手入门实战教程

Docker

基于Docker部署ceph分布式文件系统(Luminous版本)

东拉西扯

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

WEB应用

APISIX插件开发之精细化限速插件

网站建设

如何正确配置CDN高速缓存,避免越用越慢的尴尬

WEB应用

APISIX插件开发之Kong网关HMAC鉴权插件(附客户端SDK)

WEB应用

APISIX运维优化之解决长尾请求(耗时抖动)问题

8月17日 · 2022年

gRPC开发过程中遇到的问题记录

2447 1
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
8月3日 · 2022年

SQLAlchemy因密码含有@符号连接MySQL失败

2460 0
最近新来的实习生小伙子在重构一个我入职时开发的老系统,这个系统之前用的是Python twisted框架开发的,这次重构希望可以换到FastAPI,也就是我上一篇文章分享的Flyer开发框架。小伙子很给力,花了几天自学了下FastAPI和Flyer就开始开发了,结果用Flyer框架的时候,连接MySQL报错如下:sqlalchemy.exc.OperationalError: (...
6月17日 · 2022年

Flyer:基于FastAPI的轻量级API开发框架

2809 0
概述我们经常会听到“不会开发的运维不是个好运维”,确实在运维工作当中,娴熟的开发经验能让运维工作如鱼得水,事半功倍!高级的运维除了需要精通Shell脚本编程之外,最好还需要掌握一门高级语言,比如Python、Golang、PHP、Lua等。高级语言除了可以解决一些更复杂的运维场景,还可以帮助我们更好的理解业务,做好业务运维,毕竟知己知彼才能百战不殆。经常看到很多运维同学写接口通常...
3月18日 · 2022年

APISIX高级路由之301/302跳转配置

2847 0
我们这有个内部网站同时支持2个域名访问,最近因升级需求希望统一到一个域名,即老域名做一个301跳转到新域名。这个在Nginx直接配置一个if逻辑,判断是老的host并跳转到新的域名即可。那这个Case在APISIX里面应该怎么配置呢?看了下APISIX文档,发现有两种跳转插件:redirect和response-rewrite,前者只能跳转uri不包含协议主机部分,后者可以通过修改返回头...
3月1日 · 2022年

解决paramiko使用invoke_shell交互式命令超时问题

4080 0
最近手头有个业务是基于Apache Karaf开发的,运行在K8S里面,跑了一堆的bundle,偶尔里面挂一两个bundle容器是没什么感知的,但是业务可能会局部异常。要推动业务优化的话,周期就会拉得很长,因此先弄个定时拨测来监控下bundle是不是都在正常运行的。看了下要查看Karaf里面的bundle需要ssh进去执行bundle list命令,因此基于之前的经验利用Python p...
2月25日 · 2022年

分享一个APISIX网关返回502的典型案例

1683 0
APISIX为了提高性能,默认会打开keepalived特性,预设会话保持时长为60s,我们在部署网关的时候也保留了这个优化特性,恰好我的上游服务基于Gunicorn+FastAPI开发框架,也开启了keepalived,会话保持默认设置为5s。这样就有问题了:网关和上游服务建立连接后60s内,新请求会继续复用这个连接,但是上游却在5s后主动关闭了连接,因为网关将新请求转发给上游时,才发现连接已经被关闭了,因此就出现了上述报错。...
12月23日 · 2021年

解决百度搜索出现安全中心提醒

1537 0
自从博客几乎断更之后,就已经很少关注SEO了。昨天机缘巧合在百度搜了下“zhang.ge”这个国外线路域名的时候,居然发现有如下提示:纳尼?还有这种事情?但是搜索“zhangge.net”却没有,看起来应该是误报。点击打开会有如下提示:看到有个“申请解封”按钮,就点过去,填写表单提交了下:结果,没等多久,大概之后个把小时就收到了百度发来的审核通过的...
12月12日 · 2021年

APISIX运维优化之解决长尾请求(耗时抖动)问题

2764 0
自从APISIX网关推广使用以来,在我们部门已经有很多生产业务接入使用。有一天被拉进了一个问题群,被告知APISIX网关性能有问题,整体表现还不如之前的ZUUL网关。纳尼?APISIX性能再怎么不济也不至于比ZUUL差吧?废话少说,直接上手弄了个串行请求对比测试了一下生产环境的APISIX网关和ZUUL网关,结果大跌眼镜!正常情况下,APISIX的耗时都优于ZUUL网关,但是AP...
11月14日 · 2021年

APISIX运维优化之配置文件自动化生成方案

3405 0
Configmap的方式来配置APISIX。最开始我们就采用 Configmap的方式在腾讯云TKE上部署APISIX,当网络区域越开越多时,每个TKE集群都需要去定义一套config.yaml对应的Configmap,管理非常繁琐。因此,这里我们利用Python的Jinja2插件来自动化渲染APISIX的配置文件,整体非常方便!...
12月19日 · 2013年

分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决

7274 0
今天发现一个疑难杂症:发现批量发布一个新版本程序时,发现有一台没有成功。亲自登陆上去看了下,发现原来是发布帐号在某个目录下创建目录失败了!人工 touch 试了下,发现提示没有权限。然后 ls -l 看了下,发现一切正常:[[email protected]:/data/TNM2/release]# ll 36240-rw-r--r-- 1 publish user...
9月28日 · 2015年

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

19111 259
张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了。博客从此走上了经常被人拿来练手的不归之路。当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题。根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者。一、功能申明分享之前我必须先申明...
7月31日 · 2014年

VPS服务器备份网站文件和数据库到七牛云存储的shell脚本工具

4520 33
一直想写一篇关于网站本地备份和远程备份的文章,相关草稿其实在6.12号就写好了,一直因为没有测试环境,没发布出来。时间久了,也就忘了,回头找个时间测试下再发布好了。今天分享的工具也和备份有关,而且是远程备份,这个工具算是我的无聊之作吧,虽说WordPress已经有wp2pcs这类备份插件了。相信折腾VPS的站长会喜欢我这个工具的,因为它不会常驻占用资源。一、工具档案工具名称:Bac...
脚本编程阅读更多
4月8日 · 2015年

zabbix agentd客户端插件Shell一键自动安装脚本

918 5
这次生产环境上线了多台Linux服务器,需要全部纳入Zabbix监控范畴,一台一台的去装Zabbix Agentd插件那就太苦逼了,所幸Zabbix客户端插件是支持绿色安装的,就写了个简单的一键安装脚本,然后配合 Secure CRT 的多窗口交互命令一次性就可以搞定了。正常启动Zabbix客户端服务其实只需要2个文件: zabbix_agentd 和 zabbix_agentd....
5月3日 · 2015年

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

15837 74
最近在折腾博客主题,通常来说大多数人认为换主题会影响SEO,实际上只要你把工作都做到位了,是没有任何问题的。比如,换主题后你得仔细检查标题和描述等内容是否发生改变、换主题后是否带来了大量的404页面等。当然,更细微的可能是换主题之后,网站的内链网络也发生了微妙的改变,但是整体的影响较小。总之,张戈博客这次更换主题基本上没有看到明显的SEO影响,反而出现几个新的关键词。好了,题外话到...
6月4日 · 2015年

Linux下的mongodb服务脚本,以备不时之需

6091 8
前些天,一位开发同事找到我,说他测试环境的 mongodb 经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。跑过去看了一下日志,发现存在stop记录,我就纳闷了,没人操作他还会自己stop。这明显不是挂掉了,于是到history中看了下同事的启动命令:/usr/local/mongodb/bin/mongod --dbpath=/usr...
12月30日 · 2013年

Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性

3359 1
在之前的工作中,由于分区域管理,TCP设置有差异,所以编写过很多关于IP切换的脚本,作为大批量电脑维护的脚本,最重要的就是兼容性,可不能就测试的那几台电脑通过了,然后发布给同事使用的时候,出现各种状况!其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将【本地连接】写死在代码中,可实际上并不是所有电脑都叫本地连接;比如有的用户电脑可能升级了网卡驱动,或者更换了网...
7月1日 · 2015年

Windows下bat批处理脚本使用telnet批量检测远程端口小记

11660 21
多年没写过批处理了,来新公司的第一个case却是需要写一个bat脚本,批量更新采集agent的配置文件,其中就涉及到远程IP的端口检测。本以为会和Linux一样可以简单判断:echo q|telnet -e \'q\' $ip $port && echo "$ip:port 通"||echo "$ip:port 不通"结果发现Windows下面telnet退出并没有执行...
8月3日 · 2022年

SQLAlchemy因密码含有@符号连接MySQL失败

2460 0
最近新来的实习生小伙子在重构一个我入职时开发的老系统,这个系统之前用的是Python twisted框架开发的,这次重构希望可以换到FastAPI,也就是我上一篇文章分享的Flyer开发框架。小伙子很给力,花了几天自学了下FastAPI和Flyer就开始开发了,结果用Flyer框架的时候,连接MySQL报错如下:sqlalchemy.exc.OperationalError: (...
11月5日 · 2014年

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

27575 53
最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护。前天写的Sh...
12月21日 · 2013年

桌面白屏(Active故障)修复批处理

4414 1
一年前我在做用户系统维护服务工作时发现AD域环境下,AD用户桌面经常会出现壁纸无法显示,ActiveDesktop桌面损坏之类的故障,当时从前人心得里学到的方法就是登入管理员,然后删除用户配置目录(%userprofile%),然后重新登入之后用户桌面就能正常了如此确实能修复这白屏故障桌面,但是用户的所有事设置均被重置,加大了维护工作量,这不是做维护愿意看到的,于是左查右查,我终于找到了症...
3月1日 · 2022年

解决paramiko使用invoke_shell交互式命令超时问题

4080 0
最近手头有个业务是基于Apache Karaf开发的,运行在K8S里面,跑了一堆的bundle,偶尔里面挂一两个bundle容器是没什么感知的,但是业务可能会局部异常。要推动业务优化的话,周期就会拉得很长,因此先弄个定时拨测来监控下bundle是不是都在正常运行的。看了下要查看Karaf里面的bundle需要ssh进去执行bundle list命令,因此基于之前的经验利用Python p...
11月15日 · 2014年

grep无法查找shell传过来的变量?先注意一下文本格式吧!

12417 6
昨天,同事告诉我发现一个诡异的问题,grep无法搜索shell中的变量,着实很惊讶。到他所说的服务器上试了下,还真是不行!大概就是这样一个要求:①、有个文本为userid.txt,里面每一行一个用户id,类似如下:00010003000500070009②、另外还有一个文本为record.txt,里面是所有用户的操作记录,一行一条,并且包含有id,类似如下:...
操作系统阅读更多
12月18日 · 2013年

抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面

3182 0
写在前面:当一个台WEB主机(JAVA平台)上有多个站点时,很可能因为一个站点项目出现死锁之类的BUG而导致所有站点挂掉!最烦的就是因为站点过多,在日志无法具体指向的时候,你根本无法确定那个站点出现BUG,从而你也没法推给开发人员解决。                    下面,就介绍一个抓取高占用CPU的线程的简单方法: 运行top命令取得JAVA线程号(PID),假如是2068;...
12月31日 · 2013年

用户需当心:Windows崩溃信息有可能被黑客截取

2103 2
       根据Websense安全实验室最新的研究报告指出消费者PC端递交给微软的错误报告有可能被黑客截取,并依据这些信息帮助黑客制定相关攻击策略。当系统出现崩溃的时候会弹出相应的对话框,这些信息中详细包含了设备的运行状态,Windows的版本信息,应用等信息,而这些信息都有可能被黑客监听到。       虽然当系统或者应用程序崩溃的时候会弹出错误报告,通常需要用户的确认才是否将这些错...
9月29日 · 2014年

Linux网络实时流量监测工具iftop的安装使用

7601 1
概述:网络管理是基础运维中一个很重要的工作,在看似平静的网络运行中,其实暗流汹涌,要保证业务系统稳定运行,网络运维者必须要了解网络的流量状态、各个网段的使用情形,带宽的利用率、网络是否存在瓶颈等,同时,当网络发生故障时,必须能够及时发现问题,迅速定位问题,进而解决问题,这就需要一些网络监测工具的辅助,本节将介绍一款小巧但功能很强大的网络实时流量监测工具iftop。一、iftop概述ifto...
3月18日 · 2015年

解决mstsc无法连接问题:由于没有远程桌面授权服务器可以提供许可证…

3436 3
最近一直很忙很忙,完全没时间打理博客,回家后基本上就是洗洗睡的节奏,我之前真的从未想过,我会有回到家不想碰电脑的情况。。。不但不想碰电脑,而且失眠症也消失无遗,因为实在是太疲劳了,总算是有了些好处。这几天实际上也有一些可以记录的工作经验,无奈一直没有头绪也没时间,刚好趁着今天午休间隔,先整理出一小部分好了,不然博客就真废了。。。一、故障案例①今天上午在给测试组的IIS新增https...
1月14日 · 2014年

Linux系统chmod误操作目录权限恢复方法

1004 8
部门刚上线了一个新系统,发现一个BUG,于是开发直接上机器调试,他认为是文件目录权限不够的问题,于是想用chmod -R 777 先给这个程序目录全部权限试试。结果,那家伙手一抖命令敲成了:chmod 777 -R /*而且想都不想就回车了,然后弹出一堆 /proc/*** 没权限更改目录权限的错误提示,我一看就冷了一大截。。。里面让他ctrl +C 终止命令。不出所想,系...
11月29日 · 2018年

Linux运维基础技能: 接入层与网络基础

1665 17
本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。希望对需要学习、面试 Linux 运维的同学有所帮助。MSS与MTU的区别,默认大小各是多少? 标准以太网接口缺省的MTU(最大传输单元)为1500 字节,是最大帧151...
7月23日 · 2014年

Linux下巧用chattr、watch命令的实例

4823 7
一、起因前些日子,张戈在日志备份服务器加入了日志压缩的计划任务(详见服务器日志备份超节省空间的思路),结果发现监控总是发来tar的报警,提示存在tar进程。仔细检查history后发现是公司总部那边做的监控: 每20分钟执行一个监控脚本,然后删除。分析下这样做的好处:①、不留痕迹;②、把history塞满,让其他操作无迹可寻(感觉有点蛋疼)。二、擒...
8月13日 · 2014年

SUSE Linux系统在线安装软件命令zypper参数详解

11046 4
Linux系统安装软件,不管是从性能还是从稳定考虑,优先推荐编译安装的方式都是无可厚非的。不过在编译安装的时候,偶尔会提示缺失一些依赖组件,比如curl-devel、libevent等。这时候,要去找相应的编译包或者rpm包又要耗费时间!而且,往往当你找到并开始安装的时候,很有可能又有新的依赖组件缺失提示!!郁闷死你。。。这时候,在线安装功能就可以出马了,比如Centos下的yum、ubunt...
1月23日 · 2014年

Redhat设置NFS挂载的简单步骤

7314 0
初识nfs还是在测试lvs负载均衡的时候,为了保证代码的一致性,将一台Realserver作为nfs服务器,而其他Realserver均以nfs将代码挂载过来。这样就保证了代码的一致性,但也是由很大隐患的,一旦那台Realserver宕机,那就全军覆没了...好了,废话不多说,进入nfs挂载简单步骤。一、安装nfs一般redhat是默认安装了nfs服务的,如果非默认安装且取消勾选nfs的话...
8月6日 · 2016年

Linux系统 df 命令显示异常、分区丢失问题解决

12493 21
本文记录2种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。一、根目录丢失前些日子,同事在RTX群里问大家,有台服务器执行 df -h 看不到根目录,该如何解决?[[email protected]:~]# df -hFilesystem Size Used Avail Use% Mounted onudev...
WEB应用阅读更多
7月22日 · 2015年

Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问

5792 9
这是我上一家公司的案例总结,发现躺在草稿箱好几个月了,今天得空就整理发布一下。先说一下开发那边提来的2个case:①、同一个域名需要反向代理到前台和后台(不同机器和端口);②、需要采用IP+端口的模式,嵌入到APP作为DNS污染后的备选方案。对于第①个问题,很好解决:通过区分二级目录来反代不同的节点即可,所以代码类似如下:server { li...
12月24日 · 2014年

Nginx在线服务状态下平滑升级或新增模块的详细操作记录

16091 13
今天,产品那边发来需求,说有个APP的IOS版本下载包需要新增https协议,在景安购买了免费的SSL证书。当我往nginx上新增ssl时,发现服务器上的nginx居然没编译SSL模块!看了下旧版本nginx的configure选项:linux-gz215:# /usr/local/sbin/nginx -Vnginx version: nginx/1.0.11built by...
12月29日 · 2014年

Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法

18192 12
最近一直在帮一个购买了张戈博客付费服务的朋友做网站防护,为了简单抵挡一下竞争对手的DDoS攻击,他给网站开启了Incapsula的免费CDN服务。开启CDN之后,我之前给他写的Shell防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的IP都是CDN节点的,而我不可能把CDN的节点IP也给禁用了,那就都不能访问了。为了解决这个窘迫,我想到了以前看过的Nginx访问限...
12月6日 · 2014年

php平滑重启nginx,彻底清除WordPress的静态缓存

6806 9
每一次分享技术文章,都是基于自己的痛点,基于自己的需求。这次也一样,所以分享具体方法之前,我先说一下我这次的需求与痛点:一、需求痛点在博客集成了代码版缓存功能之后,为了方便在前台清理页面缓存,我特意写了ajax清理缓存的功能(相关文章)。这个功能写好之后确实可以正常工作。但是,为了让网站加载速度提升到极致,我还在nginx里面加了类似于WP Super Cache的mod_rewr...
10月6日 · 2015年

Nginx配置多站点下的Proxy_cache或Fastcgi_cache缓存加速

7524 19
张戈博客分享过很多关于缓存加速的教程,自己也是不断的在摸索,追求最佳的网站静态缓存加速方案。在这里简单的总结一下:1、使用虚拟主机的朋友推荐使用缓存插件或php 代码版缓存方案=>点此直达2、使用独立主机的朋友推荐使用Nginx的Fastcgi纯静态缓存方案=>点此直达在我分享了Nginx的Fastcgi缓存之后,有不少朋友已折腾成功。不过有朋友反馈,不知道在多...
3月18日 · 2022年

APISIX高级路由之301/302跳转配置

2847 0
我们这有个内部网站同时支持2个域名访问,最近因升级需求希望统一到一个域名,即老域名做一个301跳转到新域名。这个在Nginx直接配置一个if逻辑,判断是老的host并跳转到新的域名即可。那这个Case在APISIX里面应该怎么配置呢?看了下APISIX文档,发现有两种跳转插件:redirect和response-rewrite,前者只能跳转uri不包含协议主机部分,后者可以通过修改返回头...
9月25日 · 2014年

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

3534 67
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSpider)(最新补充:宜搜蜘蛛已被UC神马搜索收购!所以本文已去掉宜搜蜘蛛的禁封!==>相关文章)。最近张戈发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛...
3月17日 · 2018年

网站集成打字震动特效JS代码改进版

1270 37
这又是一个拖欠了很久的分享,很早就有朋友留言问评论打字炫彩、震动特效怎么实现的。这功能其实网上早就有人分享N遍了,有点搜索技巧和DIY能力的站长同学也早就实现了。这里还是继续分享一下我这边的一些改进,也许有朋友可以用得到。简单的改进:1、移动端关闭震动,移动端震动会显得很卡;2、添加震动开关,方便不喜欢的朋友进行关闭,采用Cookie记忆同一个浏览器点击关闭一次即可。P...
5月20日 · 2015年

为网站开启Nginx缓存加速,支持html伪静态页面

17449 53
上一篇文章分享了如何开启 Nginx 的缩略图功能,也提到了 Nginx 缩略图在完美替代七牛缩略图或PHP缩略图的同时,还会带来一定的CPU负载消耗。因此,本文就来分享一下如何解决这个实时生成缩略图带来的CPU开销问题。思路很简单,既然你要实时生成,那我就将你生成的缩略图缓存一份好了!在我测试期间发现,Nginx 的缓存也同样可以缓存伪静态的 html 页面,完全可以替代WP-S...
7月7日 · 2019年

CloudFlare边缘计算Workers尝鲜初探:博客跳转中间页

3253 42
4月27日,有幸参加了由Aftership组织、CloudFlare的大牛孟鑫主讲的《CloudFlare 最新边缘API,打造无服务器(Serverless)架构》课程,感觉收获颇丰。因为这个课程非常接地气,大部分内容都在实战,而不像有些分享一味的讲理论、拼PPT,听得云里雾里,分享的时候是一个样子,真正你去尝试的时候却是另外的样子,duang~,当然,还有一个原因就是张戈博客目前也在用Clo...
2月27日 · 2016年

分享一下php7和其他php多版本共存的配置教程

8801 15
年前,终于迎来了期待已久的php7正式版,我也在第一时间就给博客用上了。性能确实有了质的飞跃,问题还是有不少的。比如鱼叔的微信插件在php7下面自动回复异常等。为了继续使用微信插件,我只好将php5.6又开了起来,下面简单分享一下多个版本php共存的方法。一、编译路径多个版本php要共存,必须使用不同的安装路径。比如,之前php5.6安装在/usr/local/php,那么我们安装...
9月22日 · 2014年

http加速器Varnish的vcl配置小记(lnmp环境)

807 2
在以前的公司曾安装过Varnish,可惜还没摸热就离职了,这次接着倒腾了下Varnish,并搭建成功,特来记录下,以备后用。一、测试环境系统版本:CentOS 6.4 x64WEB环境:Nginx+PHP+MySQLVarnish:3.0工作原理:简单的说,在本次测试中,Varnish将来自80的请求转发到后端的nginx8080端口,当匹配到请求是jpg、css、...