东拉西扯

张戈博客正式启用全新个性域名: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:支持私有化部署和源阅读无缝对接的语音合成服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Linux系统zip压缩命令详细参数,附文件排除选项的正确用法

2651 7
这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了50多MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我第一想到的办法就是在网站ZIP压缩打包的时候排除缓存文件夹。下面是从网上找来的ZIP命令参数:zip Linux上适用的参数:-1 : 最快压缩,压缩率最差。-9 : 最大压缩,压缩率最佳。-b : 暂存文件的路径。这个参...
3月8日 · 2014年

Linux:awk命令详解

9966 27
简单使用:awk :对于文件中一行行的独处来执行操作 。awk -F :\'{print $1,$4}\'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。AWK命令介绍awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 1. 调用awk...
7月21日 · 2014年

nginx日志切割及7天前的历史日志删除脚本

7805 16
上次写到《服务器日志备份超节省空间的思路》,压缩后磁盘占用由93%降到了62%,效果还是不错的!为什么不直接删除呢?其实是因为这些日志涉及到支付等重要业务,保存半年以上也算是保守的做法。今早,又发现几例磁盘空间报警,占用率都在90%+,关键居然是根分区!这要是日志突然暴涨,把根分区撑爆了,那就可以体验到“菊花一紧”的快感了吧?索性利用CRT的全局命令把磁盘空间占用率超过75%的服务...
脚本编程阅读更多
2月19日 · 2014年

Shell脚本的简单排错法及调试程序bashdb

9459 32
Jboss的研究稍有卡壳,那就来点基础教程好了。与众多脚本语言一样,Shell脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。找出脚本中的错误是很重要的能力。比如,我经常不小心会把echo命令写成了ehco,那么执行就会出现下面这种情况:[root@localhost ~]# sh testtest: line 2: ehco:...
12月17日 · 2013年

结合VBS,实现批处理自动以管理员身份执行

2268 0
这是我在百度回答知友时写的,用于自动以管理员身份执行命令或程序→百度原址批处理代码,功能:自动以管理员身份执行test.exe:start admin.vbs runas /user:administrator test.exeadmin.vbs 代码(延时是为了成功传值给bat命令,确保成功)dim wsh set wsh=WScript.CreateObje...
9月28日 · 2015年

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

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

批处理判断第一个硬盘的最后一个分区并进入

1136 0
参考批处理之家写给百度知友的。→百度问答原址@echo off echo 批处理初始工作目录为%cd%,开始切换... for /f "tokens=3 delims==" %%i in (\'Wmic Path Win32_LogicalDiskToPartition^|find /i "Disk #0"\') do call :check %%i echo. ...
10月2日 · 2016年

Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

11854 51
导读:毋庸置疑,数据备份是网站可持续性运营中至关重要的一个工作,如果还没有做任何备份机制的网站,建议尽早完善,莫要等到追悔莫及。本文将分享一个安全稳定、快速可靠、花费廉价的备份方案。一、优点分析张戈博客在2年前已经分享过一篇关于网站备份的文章:《Linux/vps本地七天循环备份和七牛远程备份脚本》,今天将再次结合这个脚本,将网站数据通过阿里云内网备份到阿里云OSS。对于阿里云...
7月31日 · 2014年

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

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

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

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

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

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

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

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

Ghost安装Win7/XP后自动恢复IP的批处理

4776 41
今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式。所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置。之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。懒得去折腾兼容方法,就写了2个导出IP的脚本和...
操作系统阅读更多
8月6日 · 2016年

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

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

Llinux文件目录权限及chmod命令简析

1209 10
这些天,在互推联盟群(344134224 )遇到几例关于WP升级失败以及FTP账号登陆的问题。最终发现都是主机的目录权限设置存在问题。比如,博友【PPT分享网】提出,能否让2个账号都能访问同一个FTP目录,其实只要使用chmod对目录赋相应的权限即可。本文整理了关于Linux目录权限的一些基础知识,希望可以帮助一些刚接触Linux的朋友,比如使用VPS的博友等。 ...
4月5日 · 2016年

分享一次Linux任务计划crontab不执行的问题排查过程

4035 23
朋友弄了一个小项目,要我帮忙做下Linux系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。开发朋友一时之间也没空去研究项目奔溃的根因,只好由我这个运维先写一个项目进程自拉起脚本,通过Linux任务计划每分钟检查一下进程是否存在来避免项目挂了没人管的情况。自拉起脚本很简单,随便写几行就搞定了:#!/bin/bashprocesscount=$(pgrep my_app|w...
5月19日 · 2014年

LVS中Windows作为真实主机(RealServer)时的设置方法

2203 22
最近,公司新推了一个电商项目,IIS+ASP。而上面大大规划了要用LVS负载均衡集群,在这个技术陈旧的企业,LVS项目还是去年才真正推行。由于最开始是由我测试的,所以这次的部署又落到了我头上了。 之前一直是在RHEL上做的LVS+Keepalived,现在换成Windows主机,虽然在集群架构上的理解没啥问题,但是这Win主机做RealServer具体该如何设置还真没弄过。不过,万能的搜索引擎很快...
8月7日 · 2014年

Linux系统yum命令安装软件时保留(下载)rpm包

9177 4
昨天在部署zabbix监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用。而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有外网的服务器的yum命令来安装这些软件,并自动保留安装包即可。于是就有了以下的转载教程:一、让yum命令下载RPM包,而不安装。yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀...
1月14日 · 2014年

Linux基础知识之文件隐藏属性

5722 0
这几天温习下Linux基础知识,基础里面较为薄弱的知识点我会在这里记录一下,以便回头查看Linux下的文件除了权限属性,还有一些隐藏属性,必须使用lsattr来显示,如下所示:[root@localhost ~]# lsattr test ------------- test结果中第一列是13个短横杆,其中每一个横杆都是一个属性,如果当前位置上设置了该属性就会显示相...
1月14日 · 2014年

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

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

事实证明Linux永远是NO.1

3132 3
嗨,我正在写一个简单的程序,我要让这个程序打印出一个整数。 #include <stdio.h>    int main() {        int linux = 701;        printf("%d", linux);        return 0;    }  够简单吧。真的吗?我把它存成了code.c现在我...
7月25日 · 2014年

解决ping域名时出现“TTL传输中过期”的问题

11217 14
昨天下午,RTX群里面公司负责游戏运营的MM发来求助:我还真是孤陋寡闻,以前还真没见过这个问题,赶紧度了度,很快就帮MM解决了问题。 解决办法也很简单:方法①、 关闭所有浏览器,右键点击“网络邻居”,选择“属性”,在“本地连接”上点击右键,选择“修复”即可。方法②、在DOS窗口下(如果是XP,点击屏幕左下角的“开始”,“运行”,输入“cmd”回车)输入:ip...
12月31日 · 2013年

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

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

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

2069 0
在决定全面铺开使用APISIX之前,Kong网关在我们的生产环境已经试用了将近一年,因此存在大量的生产环境API接口使用的是Kong HMAC鉴权。此次迁移到APISIX网关,为了减少客户端的改造工作,我们决定将Kong网关的HMAC鉴权插件移植到APISIX,同时将Kong的HMAC认证作为后续API接口的统一鉴权方案。...
2月25日 · 2022年

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

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

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

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

修改Apache的超时设置,解决长连接请求超时问题

5147 47
某日,组内后台开发找到我,问我们的WEB服务器超时设置是多少。他反馈的问题是,有一个VLAN切换任务cgi接口经常返回504网关超时错误,要我分析解决下。我问了一下,得知这个请求遇到网络设备对象较多的时候,需要小半个小时才能完成,也就是要用到长连接才行。老规矩,从开发那拿到接口地址,得到接入层服务器IP,是一台Haproxy代理,看了一下Haproxy的超时设置:# 设置成功连...
5月2日 · 2019年

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

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

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

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

Nginx网站使用CDN之后禁止用户真实IP访问的方法

14500 49
做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描、拉取、注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables 、 Nginx 的deny指令或者是程序来ban掉这些恶意请求。而对于套了一层 CDN 或代理的网站,这些方法可能就失效了。尤其是个人网站,可能就一台VPS,然后套一个免费的CDN就行走在互联网了。并不是每个CDN都能精准的拦截各种恶意请求的,更...
1月28日 · 2015年

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

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

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

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

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

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

Nginx内容替换模块http_substitutions_filter_module及实用案例分享

2745 28
说到Nginx的内容替换功能,大部分人应该都听说过Nginx内置的的subs_filter替换模块,但是这个模块有个缺憾,就是只能替换一次,而且还不支持正则表达式,这就有些鸡肋了。不过,我们可以集成一个第三方的替换模块:ngx_http_substitutions_filter_module,来实现我们的各种需求。经过测试,这个模块至少有如下实用功能:①、支持多次替换②...
5月10日 · 2015年

为WordPress开启Nginx缩略图功能,七牛从此陌路

5304 31
张戈博客曾分享过不少关于七牛云存储的一些经验技巧,对七牛感兴趣或者遇到相关问题的朋友可以看一看以前的相关文章: 七牛&又拍云CDN云存储节省GET次数的小技巧 WordPress简单代码开启七牛CDN及集成七牛缩略图的方法 浅谈网站使用七牛云存储之后的robots.txt该如何设置? Linux/vps本地七天循环备份和七牛远程备份脚本前段时间,百度云加...