Mysql瓶颈分析方法
数据库往往会成为应用的最终瓶颈,而Mysql是被使用得最多的开源关系型数据库。如何分析执行Mysql数据库语句的性能就非常重要。但是很多开发人员并没有相关的意识与能力,但其实掌握了一些简单的常用手段,就可以让我们自己分析出数据库语句的问题。曾经看到过有对数据库查询语句中出现7个Select的语句,当时完全被震惊到了,这根本就是往系统里注入了一个大雷呀,数据量一旦增多,数据库挂,应用挂,服务挂,客户挂,公司挂。。。。还是不做破了一个鸡蛋就想着毁了一个养鸡场的推断了。我们收集下常见的数据库的分析手段。
查看当前数据库执行命令12mysql> select count(*) from information_schema.processlist where COMMAND != 'Sleep';mysql> select * from information_schema.processlist where COMMAND != 'Sleep' limit 5;
慢查询查看慢查询时间定义12345678910mysql> show ...
Nginx性能优化配置参考
系统优化
系统内核优化参考123456789101112131415161718192021222324$ cat /etc/sysctl.confnet.ipv4.tcp_max_syn_backlog = 65536net.core.netdev_max_backlog = 36768net.core.somaxconn = 36768 net.core.wmem_default = 8588608net.core.rmem_default = 8588608net.core.rmem_max = 16877216net.core.wmem_max = 16877216 net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000net.ipv4.tcp_max_orphans = 3376800net.ipv4.ip_lo ...
Openshift上使用Nginx-Pod作灰度发布
参考文章:使用 Nginx 实现灰度发布
什么是灰度发布
【百度百科】灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。 在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
除了AB test灰度发布另一种思想是,只发布给一小部分用户,如:App在发布之前,针对性的给一小批用户测试下新版本,用小流量发布的方式来检验新版会不会有问题。
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
Openshift上实现蓝绿部署
在openshift上的部署两个版本的Service:service01, service02。在创建Route的时候,可以非常简单地指定同一个Route流量访问两个service的百分比service01(25%流量), service02(75%流量)。所有请求该Route的流量会被按指定的比例访问后service。
对应的Route yaml配置文件如下:
12 ...
SOPS对配置文件数据进行加密
SOPS 是由Mozilla 开发的一款开源的文本编辑工具,它支持对YAML, JSON, ENV, INI 和BINARY 文本格式的文件进行编辑,并利用AWS KMS, GCP KMS, Azure Key Vault 或PGP 等加密方式对编辑的文件进行加密和解密。在当前它还可以与heml secret作用,为Kubernetes的secret资源数据进行加密。本篇主要介绍sops的基本用法,而helm secret的使用不做介绍。
##GPG进行加密
生成GPG文件1$ gpg --generate-key # 根据引导生成gpg加密文件
或者自动生成123456789101112131415gpg --batch --generate-key <<EOF%echo Generating a basic OpenPGP key for HELM SecretKey-Type: RSAKey-Length: 4096Subkey-Type: RSASubkey-Length: 4096Name-Real: MichaelName-Comment: Personal ...
Scrum敏捷开发
团队成员
一般情况人数在5~9个左右
团队要跨职能(包含开发人员、测试人员、用户介面设计师等)
团队成员构成在Sprint内不允许变化。
用户故事建模为开发任务需求编写用户故事
重要性
用户故事
测试方法
预估时间
30
做为一个会员,可以查看自己的购物清单,以便一起购买
登录,点击购买清单Tab
16h
Sprint计划会议(两周一次,4个小时)
设定本Sprint目标及优先级
挑选本Sprint所要开发的需求(Story)
逐一将Story细分成Task
确定每日站会时间和地点
确定演示会议和回顾会议日期计划会议输出:
Story
Task
Hour
A
1. 编写自动化验收测试2. 设计用户界面3. 编写用户界面程序代码 4. 编写数据库代码5. 编写单元测试 6. 人工测试
3h5h8h8h8h8h
B
1. 编写自动化验收测试2. 设计用户界面3. 编写用户界面程序代码 4. 编写数据库代码5. 编写单元测试 6. 人工测试
3h5h8h8h8h8h
第日立会为早上9:00至9:15
Demo演示时间为:2018-07-10 上 ...
SonarQube应用离线安装插件
SonarQube的插件地址为:https://binaries.sonarsource.com/Distribution/将下载的插件文件存放在SonarQube应用的/opt/sonarqube/extensions/plugins目录下。
参考文章Sonar 离线安装插件
Vagrant常用操作
查看安装的插件列表1$ vagrant plugin list
安装vagrant插件1$ vagrant plugin install vagrant-disksize vagrant-ignition vagrant-vbguest
查看box列表1$ vagrant box list
添加一个新的box1$ vagrant box add centos-76 centos-76.box
将一个虚拟机导出为box1$ vagrant package --output centos-7.6.box
删除一个box1$ vagrant box remove centos-76
WSL2-+-microK8s-+-K8s
Windowns 10 (WSL2) + Ubuntu 20.04
enable systemd snapd microk8s
启动systemd,并使用snap安装
123$ sudo apt install daemonize$ sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target$ sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
安装microk8s
12$ snap info microk8s$ sudo snap install microk8s --classic
使用microk8s
123$ microk8s status$ sudo usermod -a -G microk8s mpan$ sudo chown -f -R mpan ~/.kube
添加节点
1$ microk8s add-node
注意 每次使用microk8s时,需要先进入 ...
ansible通过跳板机管理另一个网络下的主机集群
原文地址:http://wooooe.com/2018/07/31/remote_forwarding/
ssh端口映射例子
因为公司的网络比较深所以经常需要跳转多次。所以这次做个记录
需求: 需要从your host跳到client中间隔了两层跳板机。
如果单纯用代理方法只能跳一层
所以如果用端口映射+代理方式就可以跳两层了
映射命令
1ssh -g -f -NL 127.0.0.1:44010:172.16.3.14:22 -p 3391 jump_host1_username@222.222.222.222
意思就是将172.16.3.14的22端口映射到127.0.0.1的44010端口,222.222.222.222是中间的代理机,3391是222.222.222.222的ssh端口。
映射完成之后。执行
1ssh -p 44010 jump_host2_username@127.0.0.1
就可以直接跳转到jump_host2上
ssh走代理方法
第一种:
1ssh -o ProxyCommand="ssh -W %h:%p -p 3391 - ...
gogs创建用户
/opt/gogs/gogs admin create-user –name=root –password=123456 –admin=true --email=abc@123.com –config=/etc/gogs/conf/app.ini
123oc project cicd &&gogspodname=$(oc get pod | grep gogs | grep -v postgresql| awk '{print $1}')oc rsh $gogspodname /opt/gogs/gogs admin create-user --name=root --password=123456 --admin=true --email=abc@123.com --config=/etc/gogs/conf/ap ...