<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yaos829的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yaos829</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yaos829]]></copyright><item><title><![CDATA[Python flask 多线程 logging 导致进程变慢和 TimedRotatingFileHandler 缺少日志]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/108750036</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/108750036</guid><author>yaos829</author><pubDate>Wed, 23 Sep 2020 12:12:26 +0800</pubDate><description><![CDATA[Python logging是不太支持多线程的，要不然可能会重复写很多日志使进程变慢。这里选择 QueueHandler 和 QueueListener 处理 flask 日志，其他线程调用 QueueHandler 往queue里发送日志消息，启动一个监听线程 QueueListener 调用 TimedRotatingFileHandler 从queue里获取日志消息，往日志文件里写日志。
import queue
import logging
from logging.handlers import ]]></description><category></category></item><item><title><![CDATA[jmeter connect response timeout 默认超时时间]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/105793919</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/105793919</guid><author>yaos829</author><pubDate>Mon, 27 Apr 2020 16:39:48 +0800</pubDate><description><![CDATA[jmeter connect response timeout 默认超时时间都是0。也就是会一直等下去。
jmeter 源码：
public int getConnectTimeout() {
    return getPropertyAsInt(CONNECT_TIMEOUT, 0);
}

public void setResponseTimeout(String value) {
    ...]]></description><category></category></item><item><title><![CDATA[Jmeter 保存请求的 Cookie 到本地文件]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/105738539</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/105738539</guid><author>yaos829</author><pubDate>Fri, 24 Apr 2020 19:50:36 +0800</pubDate><description><![CDATA[在测试登录直播间压力的时候，由于登录服务有问题，吞吐量太低导致后续的接口没有办法进行测试，所以设计了先把用户的 token 拿到，保存到本地。然后用 token 文件作为参数直接进行后续接口的测试。


在登录请求增加一个 HTTP Cookie Manager 和一个 BeanShell PostProcessor。






说明


Clear cookies each iteration...]]></description><category></category></item><item><title><![CDATA[python 字典的key没有引号，怎么使用这个字典。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/105557614</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/105557614</guid><author>yaos829</author><pubDate>Thu, 16 Apr 2020 14:52:03 +0800</pubDate><description><![CDATA[result = {
	TopicPartition(topic='CLEAR', partition=1): 
	[
		ConsumerRecord(topic='CLEAR', partition=1, offset=195, value=b'\x01\x00com.js.trade.directive.RtnOrde\xf')], checksum=None, serialized_key...]]></description><category></category></item><item><title><![CDATA[Docker 里面解决  Failed to get D-Bus connection: Operation not permitted 的两种方法。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/104041625</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/104041625</guid><author>yaos829</author><pubDate>Sun, 19 Jan 2020 16:01:06 +0800</pubDate><description><![CDATA[Docker  里面使用 systemctl 管理服务时候会出现这个问题，原因是权限不够，可以用下面两种方式对 Docker 赋予权限。
使用 docker run 增权：
启动镜像时使用：
docker run --privileged -d -it id /usr/sbin/init
# id 是启动镜像的id
# --privileged 和 /usr/sbin/init 必须指定

启动完...]]></description><category></category></item><item><title><![CDATA[DOCKER 镜像和容器的区别和使用]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103904267</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103904267</guid><author>yaos829</author><pubDate>Thu, 09 Jan 2020 11:17:14 +0800</pubDate><description><![CDATA[DOCKER 常见命令行
初学者在学习 Docker 的时候容易弄混镜像和容器，这里我把镜像和容器的区别整理了一下，列出了常用的命令行。镜像相当于压缩包，容器相当于压缩包解压得到的软件。

删除所有不在运行的容器
有时候我们在用 docker ps -a 查看所有容器时候会发现很多停掉的容器，一个一个删除很麻烦，下面的命令可以删除所有状态为 Exited 的 docker 容器
docker rm...]]></description><category></category></item><item><title><![CDATA[Linux 不停服务更新 Mysql]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103831330</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103831330</guid><author>yaos829</author><pubDate>Sat, 04 Jan 2020 11:53:04 +0800</pubDate><description><![CDATA[Linux 更新 Mysql 的时候不需要用 yum remove mysql mysql-* 卸载原来版本的 Mysql，安装新的过程中会自动帮你卸载。
一、数据备份：
①查看当前版本：
[root@centos ~]# mysql -V
②备份数据：(防止数据丢失)
mysqldump -u root -h 192.168.1.23 -P 3306 -p --all -databases &g...]]></description><category></category></item><item><title><![CDATA[Linux 里 Mysql 数据库和表的导入导出。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103831221</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103831221</guid><author>yaos829</author><pubDate>Sat, 04 Jan 2020 11:23:13 +0800</pubDate><description><![CDATA[Linux 里 Mysql 数据库和表的导入导出。
Linux 导出表，用逗号分隔字段，存储为csv。




导出
mysqldump -u root -h 192.168.1.23 -P 3306 -p --all -databases &gt; databases.sql




导入
source /root/aim.sql


导出csv 并且逗号分隔
select * from dmm...]]></description><category></category></item><item><title><![CDATA[使用 consul CLI 通过命令行查看consul服务状态。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103826839</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103826839</guid><author>yaos829</author><pubDate>Sat, 04 Jan 2020 10:53:05 +0800</pubDate><description><![CDATA[一般我们查看 Consul ，直接通过在浏览器里输入IP + Consul 端口就能访问。但是有的时候服务器的端口是不对外开放的，这个时候我们又想查看 Consul 状态，就可以使用 consul 提供的命令行查看 。
在服务中直接输入 consul ，能够打印出提供的 Consul CLI 命令参数信息。
$ consul
Usage: consul [--version] [--help] &...]]></description><category></category></item><item><title><![CDATA[Jmeter 使用 HMACSHA256 计算验签]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103637762</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103637762</guid><author>yaos829</author><pubDate>Fri, 20 Dec 2019 20:08:13 +0800</pubDate><description><![CDATA[在做压测的时候，需要批量调用接口，但是有些接口做了访问限制，需要根据当前时间戳和请求的body计算验签。
可以在jmeter 的 beanshell 里通过 HMACSHA256 计算验签
第一步 导出 HMACSHA256 jar包
程序源码 HMACSHA256 .java
package com.Base64;
 
 
import javax.crypto.Mac;
import java...]]></description><category></category></item><item><title><![CDATA[亚马逊 s3 boto3 中 Client，Resource和Session 区别。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103636594</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103636594</guid><author>yaos829</author><pubDate>Fri, 20 Dec 2019 19:31:53 +0800</pubDate><description><![CDATA[boto3 中 Client，Resource和Session的不同。
boto3 英文官方文档链接 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html
Resource 是 Amazon Web Services（AWS）的面向对象的接口。 与 Client 进行的原始低级调用相比，它们提供了面...]]></description><category></category></item><item><title><![CDATA[grafana 使用 Node Exporter for Prometheus Dashboard 监控服务器基础信息]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103616799</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103616799</guid><author>yaos829</author><pubDate>Thu, 19 Dec 2019 16:52:13 +0800</pubDate><description><![CDATA[使用 Node Exporter for Prometheus Dashboard 监控服务器CPU 内存 磁盘 IO 网络 流量 温度等指标
当需要监控服务器的CPU 内存 磁盘 IO 网络 流量 温度等指标。可以使用 grafana 的 dashborad 。
插件名称：Node Exporter for Prometheus Dashboard
插件链接： https://grafana.c...]]></description><category></category></item><item><title><![CDATA[grafana 安装使用教程]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103611032</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103611032</guid><author>yaos829</author><pubDate>Thu, 19 Dec 2019 11:12:09 +0800</pubDate><description><![CDATA[grafana 安装
安装
sudo yum localinstall grafana-6.5.2-1.x86_64.rpm

启动
sudo service grafana-server start

配置grafana在服务器启动时启动
sudo /sbin/chkconfig --add grafana-server

取消grafana在服务器启动时启动
sudo systemctl en...]]></description><category></category></item><item><title><![CDATA[在 jenkinsfile 里获取Jenkins 所有pipeline的名字。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103597174</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103597174</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 14:40:56 +0800</pubDate><description><![CDATA[在 jenkinsfile 里获取Jenkins 所有pipeline的name。返回的是一个列表
@NonCPS
def getPipelineJobNames() {
    Hudson.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)*.fullName 
}

在 jenkinsfile 中 stag...]]></description><category></category></item><item><title><![CDATA[Liunx find 在指定目录下查找包含关键字的文件]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103596706</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103596706</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 14:08:47 +0800</pubDate><description><![CDATA[Liunx find 在指定目录下查找包含关键字的文件
find  /dist/operation_by_ansible/ -name '*' -type f | xargs grep 'aws_s3.access_key'

在 /dist/operation_by_ansible/ 目录下查找包含 aws_s3.access_key 关键字的文件。

...]]></description><category></category></item><item><title><![CDATA[Linux 不能使用 service 命令启动数据库。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103595355</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103595355</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 11:57:47 +0800</pubDate><description><![CDATA[修改权限：sudo chown -R /var/lib/mysql
安装：sudo mysql_install_db
启动：sudo mysqld_safe &amp;


]]></description><category></category></item><item><title><![CDATA[jmeter创建十分钟以后的时间戳]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103595206</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103595206</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 11:50:09 +0800</pubDate><description><![CDATA[${__intSum(${__time(/1000,)},+600,)}

step1: 在指定参数里面填写 ${__intSum(${__time(/1000,)},+600,)}
step2: 在脚本引用时 bsh.args[0]; 参数就是第一步指定的时间。



]]></description><category></category></item><item><title><![CDATA[python小技巧]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103595124</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103595124</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 11:45:47 +0800</pubDate><description><![CDATA[使用enumerate代替range

enumerate函数提供了一种精简的在遍历元素时候获取每个索引的写法，在代码中尽可能用enumerate代替传统上的range与下标访问相结合的序列遍历代码
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
&gt;&gt;&gt;[(0, 'Spring'...]]></description><category></category></item><item><title><![CDATA[python简单协程使用示例]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103595071</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103595071</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 11:43:06 +0800</pubDate><description><![CDATA[使用示例
创建协程：coroutine = func()。
创建事件循环：loop = asyncio.get_event_loop()。
创建task：task = loop.create_task(coroutine)。将协程变成task。新建task的状态为pending。（可以将loop.create_task(）和loop.ensure_future()视为同等作用。
启动task：lo...]]></description><category></category></item><item><title><![CDATA[使用 openpyxl 获取Excel总列数，总行数，获取一行所有值，获取一列所有值。]]></title><link>https://blog.youkuaiyun.com/yaos829/article/details/103594988</link><guid>https://blog.youkuaiyun.com/yaos829/article/details/103594988</guid><author>yaos829</author><pubDate>Wed, 18 Dec 2019 11:40:43 +0800</pubDate><description><![CDATA[使用 openpyxl 获取Excel总列数，总行数，获取一行所有值，获取一列所有值。
from openpyxl import *


class ExcelOp(object):
    def __init__(self, file):
        self.file = file
        self.wb = load_workbook(self.file)
        sh...]]></description><category></category></item></channel></rss>