自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Tengine 的xquic,如何适配四层负载的udp健康检查?

UDP的协议没有连接状态,默认不会回复任何内容,它的健康检查要麻烦一些。本文介绍了Tengine xquic模块是如何适配UDP健康检查

2024-03-11 20:29:34 560

原创 nginx userid到底做了啥?

本文通过解读nginx userid源码,解析这个模块内部到底做了些什么

2023-12-22 21:46:37 1139

原创 nginx http 499,其实没有很可怕

很多同学在nginx出现499的时候往往会不知所措,本文就简单跟大家介绍一下499的产生原因以及排查方向

2023-10-09 16:13:10 13731 2

原创 正则的灾难性回溯?没想到我们真的踩到了……

今年7月28日,我发布了一篇文章nginx正则的回溯和灾难性回溯万万没想到,不到3个月之后,我们尽然真的差点踩到了我当时描述的那个坑里……

2022-10-12 18:20:04 1244 1

原创 nginx的正则回溯和灾难性回溯

nginx 正则的回溯和灾难性回溯是什么?他们的影响是啥

2022-07-28 16:34:41 1075

原创 dyups模块对nginx性能影响的测试

测试名称:dyups模块对nginx性能影响测试目的:测试不同场景下dyup模块对nginx性能的影响,并以此为参考制定后续优化方案背景介绍:公司采用dyups+tengine实现后端业务的动态发现,随着业务增长以及新平台上线,我们nginx集群中的upstream总节点成倍增长。在此背景下,我们发现节点数较多的大业务集群滚动升级时,nginx集群的响应时间会急剧增加。在公司大佬源码解读和测试后,我们定位到是大致原因是nginx的 worker会定期检查...

2021-03-05 16:58:48 1872 1

原创 nginx 的超时设置

前言我们在使用nginx做反向代理的时候,可能会遇到这个场景:后端正常的业务处理时间超过了nginx的超时时间,导致nginx主动返回504。为解决这个问题,我们网上搜索发现可以通过调整这几个参数来调大nginx的超时时间。proxy_connect_timeoutproxy_send_timeoutproxy_read_timeout我们调大之后发现问题确实解决了。那么这个几个参数是什么意义?是否应该都调大呢?nginx 三个超时时间配置我们先看下nginx官网对他们的解释proxy_co

2021-02-02 17:16:50 18103

原创 nginx的request_time 包含ssl 握手时间吗?

背景有业务反馈业务偶尔有慢请求,通过他们的日志猜测是ssl握手慢导致。但我们在查看nginx 日志中并没有发现request_time 很慢的请求。一开始便以nginx未发现异常把他们打发走了。但是这也引发了我的一个疑问:nginx log 的 request_time包含ssl 握手时间吗?我在网上搜索了一下,没看到特别明确的说明,然后去看了官方文档对$request_time 的介绍request processing time in seconds with a milliseconds re

2020-09-07 22:21:47 638

原创 redis通过hscan导入大hash key

背景在一次业务迁移中,需要将一个redis的db导入另一个线上的redis中,在导入的db中有几个field上百万的hash key。直接hgetall来导入有点太粗暴,所以使用了hscan来操作代码#!/bin/env pythonimport rediss1 = redis.Connection(host='192.168.0.1',port=1111)s2 = redis.Connection(host='192.168.0.1',port=2222)c1 = s1.send_com

2020-06-05 17:54:54 958

原创 直播课 1-29 Saltstack的httpapi

在官网跟新yum源信息:yum安装yum install -y gcc make python-devel libffi-devel salt-api opensslpip install cherrypy 生成证书:cd /etc/saltmkdir keycrtcd keycrtopenssl genrsa –out key.pem 4098openssl req –

2018-02-01 10:53:01 464

原创 直播课 1-27 saltstack-api

Saltstack的apiSalt-api有两种方式,一种是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了。 第二种形式是salt-api有封装好的http协议的,我们需要启动一个服务端。安装:yum install –y salt-api加载master的配置文件import salt.configmaster_

2018-01-29 15:07:02 225

原创 直播课 1-26 Saltstack

saltstack介绍Salt 是: 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行) 一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据 开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单Saltstack(中国用户组 www.saltstack.c

2018-01-29 15:00:16 273

原创 直播课 1-23 爬虫 webdriver

介绍Selenium是ThroughtWorks公司开发的一套Web自动化测试工具。 它分为三个组件: Selenium IDE Selenium RC (Remote Control) Selenium Webdriver Selenium IDE是firefox的一个插件,允许测试人员录制脚本并回放。 Selenium RC和Selenium Webdriver是测试框架,提供

2018-01-26 11:07:20 480

原创 1-20 爬虫 urllib模块

urllib的cookie使用:如果已经知道cookie,或者说你是通过抓包获取到的cookie,直接放在header的信息中直接登陆就可以; 登陆京东网站的cookie信息和不登录京东的cookie信息是不一样的, 你可以登录京东以后,抓取cookie的信息,然后访问任何网站就可以了。import urllib.requesturl = “http://www.jd.com"he

2018-01-22 10:42:45 155

原创 直播课1-18 爬虫 requests模块

request模块get方法params = {"key1":"hello","key2":"world"}url = "http://www.jd.com:r = requests.get(url=url,params=params)print(r.url)post方法params = {"key1":"hello","key2":"world"}url = "

2018-01-20 11:24:13 489

原创 1-15直播课 网络相关

爬虫网络爬虫(又被成为网络蜘蛛,网络机器人,在FOAF社区中间,更经常被称为网络追逐者),是按照一定的负责,自动地抓取万维网信息的程序或者脚本,另外一些不常用的名字还有蚂蚁、自动索引,模拟程序或者蠕虫。声明爬虫只能用于爬取公开网站,别人加密的,涉及隐私的,不能随便爬取,否则后果自负。需安装的模块 requests常用方法getpost psot方法和get相比,

2018-01-18 11:32:36 512

原创 直播课 1-13 合并pdf文件 python处理图片

合并多个pdf文件为一个pdf文件import PyPDF2import os#建立一个装pdf文件的数组pdfFiles = []for fileName in os.listdir('aming'): #遍历该程序所在文件夹内的文件 if fileName.endswith('.pdf'): #找到以.pdf结尾的文件 pdfFiles.appen

2018-01-15 11:18:03 491

原创 直播课1-13 数据处理

Csv数据处理Csv文件格式: 看下.csv文件的定义: 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它

2018-01-13 09:21:55 274

原创 1-8直播课 python发送邮件 发送附件及图片

发送附件:先找一个本地的文件 打开文件,读出文件字符串 通过MIMT ext()类来创建一个对象att,传入文件读出内容 增加att的头部信息,并指定文件名字 添加到msg消息中msg.attach(att)attfile = 'test.py'basename = os.path.basename(attfile)fp = open(attfile, 'rb')att =

2018-01-11 10:40:46 437

原创 直播课1-6 Python发送邮件

通过python发邮件步骤: 前提是:开通了第三方授权,可以使用smtp服务 1. 创建一个smtp对象 2. 连接smp服务器,默认端口都是25 3. 登录自己邮箱账号, 4. 调用发送消息函数,参数:发件人,收件人,消息内容 5. 关闭连接 smtp = smtplib.SMTP() smtp.connect(‘smtp.163.com’, ‘25’) smtp.login(‘18

2018-01-08 11:43:28 554

原创 1-4直播课 select 介绍 select写成的聊天室

select介绍Select Poll Epoll IO多路复用介绍 select目前几乎在所有的平台上支持   select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,不过可以通过修改宏定义甚至重新编译内核的方式提升这一限制。   另外,select()所维护的存储大量文件描述符的数据结构,随着文件描述符数量的增大,其

2018-01-06 11:43:27 185

原创 简单的socket多线程示例 封装

#!/usr/bin/env python#-*- coding:utf-8 -*-#@Time : 2018/1/3 23:25#@Author : Zhang Xun#@File : mysocket.pyimport commandsimport socketimport threadingclass MyThread(threading.Thread):

2018-01-06 02:26:29 422

原创 1-1 直播课 socket 示例

socket 示例

2018-01-04 10:22:55 210

原创 12-28 直播课 消息队列 socket示例

消息队列socket

2017-12-30 11:00:24 446

原创 直播课12-25 三个例子

12-25直播课

2017-12-28 10:39:59 182

原创 九周三次课(12月20日) 17.3/17.4 celery多实例 17.5 celery与定时任务

九周三次课(12月20日) 17.3/17.4 celery多实例 17.5 celery与定时任务

2017-12-21 09:15:49 227

原创 九周二次课(12月19日) 17.1 celery简介 17.2 celery小例子

九周二次课(12月19日) 17.1 celery简介 17.2 celery小例子

2017-12-20 09:25:56 170

原创 九周一次课(12月18日) 16.3 queue模块(上) 16.4 queue模块(下)

九周一次课(12月18日)16.3-16.4 queue模块

2017-12-19 09:32:05 132

原创 zabbix-agent 分发器

分发安装zabbix-anget

2017-12-18 23:49:39 320

原创 八周五次课(12月15日) 16.1 多进程的消息队列 16.2 消息队列pipe

八周五次课(12月15日) 16.1 多进程的消息队列 16.2 消息队列pipe

2017-12-16 08:50:59 262

原创 #写一个脚本实现如下功能: 输入一个数字,然后运行对应的>一个命令。显示命令如下:*cmd meau** 1—date 2–ls 3–who 4–pwd #当输入1时,会运行date, 输入2

#写一个脚本实现如下功能: 输入一个数字,然后运行对应的>一个命令。显示命令如下:*cmd meau** 1—date 2–ls 3–who 4–pwd #当输入1时,会运行date, 输入2时运行ls, 依此类推。

2017-12-15 23:06:52 594

原创 八周四次课(12月14日) 15.3 多线程共享变量 15.4 线程池

八周四次课(12月14日)15.3 多线程共享变量 15.4 线程池

2017-12-15 09:21:42 158

原创 八周三次课(12月13日) 15.1 多线程实例 15.2 多线程锁

八周三次课(12月13日) 15.1 多线程实例 15.2 多线程锁

2017-12-13 22:41:25 136

原创 八周二次课(12月12日) 14.6 多进程Manager 14.7 进程池

八周二次课(12月12日)14.6 多进程Manager 14.7 进程池

2017-12-12 23:56:01 122

原创 八周一次课(12月11日) 14.4 多进程锁 14.5 多进程共享内存

八周一次课(12月11日)14.4 多进程锁14.5 多进程共享内存

2017-12-11 17:25:45 143

原创 七周五次课(12月8日) 14.1 多进程多线程概念 14.2 多进程 14.3 多进程实例

七周五次课(12月8日)14.1 多进程多线程概念14.2 多进程14.3 多进程实例

2017-12-09 00:45:09 128

原创 七周四次课(12月7日) 13.12/13.13 memcache常用方法

七周四次课(12月7日) 13.12/13.13 memcache常用方法

2017-12-07 10:28:48 141

原创 七周二次课(12月5日) 13.8 hash类型操作 13.9 其他常用操作

七周二次课(12月5日)13.8 hash类型操作13.9 其他常用操作

2017-12-05 23:03:33 121

原创 复习4次课(12月1日) 1.1 函数定义 1.2 函数的参数 1.3 函数的默认参数 1.4 函数的变量 1.5 函数的返回值 1.6 多类型传值和冗余参数 1.7 函数的递归调用

复习4次课(12月1日) 1.1 函数定义 1.2 函数的参数 1.3 函数的默认参数 1.4 函数的变量 1.5 函数的返回值 1.6 多类型传值和冗余参数 1.7 函数的递归调用

2017-12-02 02:06:23 274

原创 复习1次课(11月28日) 1.3 python的文件类型 1.4 python的变量 1.5 python的数值和字符串 1.6 元组 1.7 列表 1.8 字典 1.9 字典练习

复习1次课(11月28日) 1.3 python的文件类型 1.4 python的变量 1.5 python的数值和字符串 1.6 元组 1.7 列表 1.8 字典 1.9 字典练习

2017-12-02 02:02:05 277

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除