东拉西扯

张戈博客正式启用全新个性域名: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运维优化之解决长尾请求(耗时抖动)问题

1月16日 · 2025年

FastTTS:支持私有化部署和源阅读无缝对接的语音合成服务

808 0
概述长话短说,最近发现微软的语音服务莫名扣费了,然后看着国内云服务动辄几千上万的语音合成服务资源包,一阵苦涩。搜了下,发现挺多基于 edge-tts 的白嫖项目,试用了下确实能用,就是和源阅读对接的体验有待提高。因此决定自己封装一个更适合源阅读 APP 的语音合成服务,以下是介绍,有需要的直接拿。项目介绍本项目基于 Edge-TTS 和 FastFlyer 开发框...
8月17日 · 2022年

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

解决Tomcat数据连接池无法释放

9919 12
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会再次出现无法登录的情况。今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。简单分析了一...
9月21日 · 2014年

清点下博客的插件以及我对WordPress插件的看法

659 12
最近,群里又讨论到了关于插件数量的问题,张戈博客的插件不多不少,正好9个。个人认为这些插件是目前博客所必需的,或者功能性价比很高的,下面就来晒一晒:一、SEO相关①、DX-SEO(已用代码替代)面向国内的博客,如果你要安装SEO相关的插件,个人强烈推荐大侠的这款,功能齐全,安装这一个就够了!功能就不多说了,自己看图:②、百度sitemap(已集成主动推送代码)百度官方出...
1月10日 · 2014年

Win平台Web访问白名单设置脚本(IP安全性原则)

4014 0
最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改tomcat下的server.xml配置文件,通过定义allow="IP.."的访问规则来控制浏览权限。这种方法有个很不好的地方,每加一次权限,你就得重启一次tomcat,用户老是挤牙膏一样,一次一两个IP的发邮件来申请开通,不但很烦人,而且对正在使用的用户体验也非常的糟糕!于是我决定要改善这个糟糕的局面。在Linu...
脚本编程阅读更多
6月26日 · 2014年

Linux操作系统DNS解析(nameserver)监控脚本

8061 20
一、起因昨天,开发组兄弟发现resin日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态!这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息!检查发现OpenSUSE的name...
11月3日 · 2014年

VPS/Linux系统防CC攻击带白名单过滤功能的Shell脚本

1036 4
最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门根据我个人VPS需求,并参考了余洪春前辈的《自动甄别黑白名单的iptables安全脚本》,编写如下Shell代码。脚本名称:自动拉黑CC攻击者IP的Shell脚本功能说明:通过netstat -an命令统计出当前请求并发大于100的IP,然后将不在白名单的IP自动加入DROP规则...
12月17日 · 2013年

[转]批处理For语句从入门到精通

1357 5
申明:本资料转自批处理之家,版权归作者:namejm 所有,如需转载请注明。原帖地址:http://bathome.net/thread-2189-1-1.html此文是俺学习批处理的启蒙教程,作者非常详细的分析了批处理最核心的for命令以及变量延迟,对于要学习批处理的童鞋非常值得仔细研读。一 前言二 for语句的基本用法三 for /f 含变量延迟四 fo...
6月19日 · 2014年

[不定期更新]简单的shell脚本练习实例

1692 24
此文将整理一些简单实用、有趣易学的shell练习脚本,希望可以帮到一些想学习shell的初学者。张戈也会在闲暇时间不定期更新此文,对已有实例进行改进和注释,增强可读性和易懂性。当然我也会不定期的添加更多简单、有趣且实用的shell练习脚本,帮助一些有需要的入门学习者。一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。原文代码为:#!/bin/bas...
11月15日 · 2014年

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

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

身份切换脚本,免登入切换权限的利器

1452 1
分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如administrator等)的切换,从而获取到所需权限。使用说明:1.将下面的代码保存为bat脚本,如switch.bat,其中的【你要加权执行的外部程序或脚本】需要根据实际情况修改成你将要执行的文件路径2.在你切换前启动的脚本中加入 call "%~dp0switch.bat" (%~dp0表示...
5月26日 · 2014年

js获取url中?后的参数,修复移动版无法切换到电脑版的BUG

4640 18
昨天,发布了《完美实现移动主题在360网站卫士缓存全开情况下的切换》一文,通过JS实现了主题在移动端访问时的自动切换,最后提到了可以在电脑版和移动版的footer里面加上手动切换链接,实现手动版本切换功能。今早发现,电脑版切换到移动版是没问题了,但是移动版切换到电脑版,JS将会再次工作uaredirect.js会再次做UA判断,然后由又跳回了电脑版! 也就是说,手机上浏览无法手动切换到电脑...
12月17日 · 2013年

[持续更新]批处理重命名系列案例

1295 1
批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都是我在百度回答知友的一些代码,既给涧客们参考,也让起到备忘的作用。。。。(本文是系列博文,将持续更新,敬请关注!)案例一、百度原址 知友问:想把一个文件夹里的全部文件都命名成001,002……这样按顺序,什么顺序无所...
3月29日 · 2015年

SendCloud邮件队列状态和已使用额度的Python监控脚本

4193 2
公司最近用上了 SendCloud 的邮件代发服务,于是就有了各种监控需求。比如每天发信额度是不是要超标了或是邮件是否堵塞了等等。最近经常接触 python,所以这次也一样,继续学习使用 python 来完成各种脚本需求。SendCloud 提供了很多对外查询的 API,只要 Get 或 Post 传递用户名和 KEY 即可获得想要的各种数据,比如最简单的【已使用额度】就可以在用户...
4月8日 · 2015年

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

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

远程桌面报错解决:No Remote Desktop License Servers Available

9708 26
用户发来反馈,使用部门Windows跳板机报错:The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license.Please contact the server administrator,最后发现是微软RDP远程桌面套件的一个BUG,可通过安装微软补丁或修改注册表来解决,本文简单记录分享下解决过程......
5月4日 · 2014年

在Linux中发现IP地址冲突的方法

4996 8
Linux下出现IP冲突,是不会像Windows那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在VM虚拟机里面安装了4个redhat,测试LVS集群。结果发现其中一台RealServer老是掉线,重启network服务后能正常几分钟,然后又掉线了。。。4个Redhat都是VM克隆出来的、完全一致的系统,仅其中一台出问题,所以博主觉得匪夷所思!直到,后来我的办公电脑(宿主)网线直接没...
11月29日 · 2018年

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

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

linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法

2090 3
这两天接到的任务是给JAVA开发项目组部署【JAVA+MySQL主从+Redis主从】运行环境。部署过程中大问题倒没有,小问题却不少,因此也涨了不少经验值。后续有时间我会一一整理记录下来,沉淀而不忘分享。今天,装完一台redis,并配置好redis.conf后,想偷懒直接用scp传到另一台redis,省去全部重新编辑的麻烦。结果一执行就出现下面这个错误:bash: scp: c...
7月24日 · 2014年

Linux下用dd命令测试硬盘的读写速度

4610 17
这也是一个老方法了,只是今天用到了,就过来记录下。总觉得公司服务器磁盘不给力,有时候vim编辑的时候都会卡顿,IO经常90%+,很纳闷,就测试了一下磁盘的读写速度。一、测试写速度:time dd if=/dev/zero of=/tmp/test bs=8k count=1000000测试结果:565 MB/s二、测试读速度:time dd if=/tmp/te...
12月30日 · 2013年

Linux从零到高手的进阶心得

998 2
从2006年毕业至今,从事IT行业已经接近8个年头。一路走来有很多心路历程和技术心得都写在了51CTO的博客中,不少文字现在看来已显稚嫩,但是这正是我真实的成长之路。这八年,从最基础的网络管理员开始,从最下层的IT工作比如说做水晶头做起,慢慢的走过国企、干过外企,做过网络管理员、系统工程师、项目经理、Linux讲师,经历过众多重大的项目(包括政府部门、国家重要民生相关项目),流过汗熬过夜,...
12月31日 · 2013年

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

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

解决Centos下vsftp无法上传文件的问题,附vsftp配置详解

30075 22
重量网络最近买了一个腾讯云的VPS,一直在折腾着,偶然请我帮忙敲几行命令解决一些小问题。这不,今天他通过yum在线安装了一个vsftp后,发现不太会用,就按照网上的教程东搞西搞。最后发现无法上传文件了,就给我操作了一把。用SecureCRT远程登录后,我做了如下检查:①、打开了vsftp配置文件(/etc/vsftpd/vsftpd.conf)检查write_enable状...
11月19日 · 2017年

替代crontab,统一定时任务管理系统cronsun简介

4956 37
cronsun 是一个分布式任务系统,单个节点和 Linux 机器上的 crontab 近似。是为了解决多台 Linux  机器上 crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。...
3月6日 · 2014年

Linux:sed命令详解

4252 34
1. 简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和...
WEB应用阅读更多
9月8日 · 2018年

解决网站404页面返回200状态码问题

7092 14
好久没打理博客,突然收到CDN流量预警,发现平均每天40G流量消耗!what?就现在这个访问量,不存在的。看了下CDN日志发现有小人一直在请求博客页面,其中被请求最多的就是CCkiller防御工具那个文章地址。呵呵,我就写一个简单的防御小工具,惹着你啦?实际上我用了CDN,也并没有安装这个工具,所以想试探、想测试效果的麻烦自己去安装使用,攻击我博客毫无意义,挂了又能怎么样?废话就扯...
4月2日 · 2014年

ipvsadm启动报错解决办法,另附ipvsadm详细参数

6339 10
记录ipvsadm 启动报错的解决办法,并附上详细的ipvsadm参数说明报错信息:[root@localhost ~]# service ipvsadm start Clearing the current IPVS table: [确定] Applying IPVS configuration: /etc/init.d/ipvsadm: line 62: /etc/sysconfig/ipvsadm: 没有那个文件或目录...
3月3日 · 2015年

Apache/Nginx伪静态规则匹配http://出现的问题与解决

1464 8
这个问题不知道有没有人遇到过,反正度娘和谷姐都没能帮到我!困扰了我挺长时间了,今天偶尔将代码放到Apache服务器下测试时,意外解决了!问题是这样的,我搭建了一个网站icon图标抓取的API接口,正常情况下对象的传参是通过$_GET[\'url\']获取的,因此常规获取图标的地址应该是:http://domain.com/?url=zhang.ge或http://domai...
4月29日 · 2015年

Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块

2002 10
昨天在公司微信群,CTO分享了这个消息,对运维来说以后基于TCP协议的后端业务的高可用又多了一个新的选择,实在是棒极了!一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy。这算是一个nginx比较明显的缺憾。不过,在1.90发布后这个认知将得到改写:2015-04-28ngin...
12月6日 · 2014年

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

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

zabbix监控在lnmp环境下编译安装小记

4359 9
最近在复习运维常见的监控告警软件的时候,想起了zabbix,于是先用军哥的lnmp一键安装包快速搭建了lnmp环境,然后成功编译安装了zabbix,特地将安装过程和遇到的问题记录在此,以便自己或有需要的人来参考翻阅。由于已有php运行环境,所以只需要编译安装zabbix即可。一、安装依赖组件yum -y install net-snmp net-snmp-devel perl-DB...
9月10日 · 2015年

实测Nginx服务器开启pagespeed加速效果

11791 21
上周有一个站长问到我一个问题,问fastcgi_cache和pagespeed加速有没有冲突。略微想了下,2个都是比较原生的主,应该不存在兼容问题。至于这个朋友问到这2个机制处理的先后问题,我思考了下。既然fastcgi_cache已经是缓存到本地的文件,那么pagespeed肯定是后处理的。通俗来说,就是当用户访问WEB时,Nginx 应该是先调用 fastcgi缓存,然后再进行page...
11月3日 · 2021年

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

3463 0
在实际业务场景中,APISIX限速太笼统,达不到业务要求,最终,我们自己在limit-count插件基础上进行改造,重新设计一个限速机制,能够针对不同的服务给不同的Consumer设置差异化的访问限速,满足生产环境更精细化的限速需求。...
12月8日 · 2015年

升级Nginx1.9.5以上版本,开启博客网站http2.0时代

7767 18
最近给张戈博客全站开启了https,所以对这块关注比较多。昨天脑补的时候发现http2.0只支持SSL加密的网站,即https。于是心血来潮,给张戈博客开启了http 2.0,尝尝鲜。查了下资料,发现Nginx不久前发布的 1.9.5版本支持http2.0,而1.8.x时代只是对SPDY进行了支持。一直用的1.62稳定版,此次为了测试http2.0,直接进行了版本跳跃,升级到了1.9.5版...
6月17日 · 2022年

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

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

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

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

分享一个Nginx反向代理的另类应用案例

7100 37
博客前面分享了一篇《分享一个Nginx正向代理的另类应用案例》,时隔不久,身为救火队员、万金油的博主又再一次接到了一个另「W」类「T」需「F」求:场景和上次有些类似,也是部门引进的第三方应用,部署在各个网络区域,从OA办公区域无法直接访问。目前,运营人员都需要登陆Windows跳板机,才能打开这些应用的WEB控制台。既不方便,而且还有一定Windows服务器的维护工作量,于是找到我们团队...