- 博客(80)
- 资源 (7)
- 收藏
- 关注
原创 go容断器源码:github.com/sony/gobreaker
sony开源在 github 的容断器 源代头注释中,原来实现的是微软2015时公布的标准,果然微软才开源界的大神。1)微软定义的 Circuit breaker我不知道正确怎么翻译,直观翻译,可能叫:环形容断器(或叫 循环状态自动切换容断器)。 因为它是在下面3个状态循环切换 : Closed / \ Half-Open <--...
2018-07-25 17:50:52
1209
原创 SSL加速卡的使用,对HTTPS 七层负载机的性能提升
SSL加速卡使用,编译驱动一、编译驱动1. 厂家提供2个SDK包,SDK与Drive,要自行编译。 DX_SDK_v2.2.2L_PUBLIC_20151225.tar.gz DX_SDK_v2.2.2L_EXAR_20151225.tar.gz 要先解压PUBIBC包,make and make install后, 在同样的目录解压EXAR包,再make
2018-01-29 11:28:27
6520
原创 GCC 编译动态库 so文件时,静态链接libmysqlclient.a 与动态链接参数一起使用问题。
直接放结论, 下面是编译一个使用了mysql C API 的 mysql.so 文件(我们的业务中,它是zbx加裁的modules so文件)gcc -fPIC -shared -o mysql.so mysql.c \ -I/usr/include/mysql \ -L/usr/lib64/mysql \ -Wl,-Bstatic -lmysqlclient \ -Wl,
2018-01-16 17:44:34
2433
原创 PXC 配置笔记-从MySQL直接转成PXC集群
英文别人github的配置流程PXC 能提供高可用,高读,多写支持最重要的优点就是高可能,在3个及以上节点时,其中一个挂了,完全不影响业务。最大的缺点是多写问题,最短板性能上限问题。在我们硬件水平是256G内存,32核CPU,SSD硬件,单行数据大概1K,单表1千万,512表。 QPS在2.5k写+5K读时,就会有节点同步阻塞问题。当时我们临时切成只读(不执行写SQL)10分钟后
2018-01-10 17:13:27
6828
原创 TokuDB与InonoDB引擎,作为slave的性能差别
左边(8.246)是使用TokuDB-5.6-percona版本的表。 右边(9.232)是使用Innodb-5.7-percona版本的表。 QPS基本上相同,两台都是slave,同一个master拉取binlog,有1024个表。CPU消耗,左边的TokuDB要高很多很多~,同样硬盘IO也相对InnoDB高1倍。还有两个结论:slave的落后值 ,tokuDB间断性有几秒的落后,InnoD
2017-11-30 15:27:23
633
原创 Percona 家的 ProxySQL 配置笔记
最近发现了 percona 自家网站的个推荐的 ProxySQL howto 在github.com有开源,并且还在持续更新。感觉commit者就是 percona自家的员工或领他家工资资助的人才。大概记录 对ProxySQL的了解。C++写的,性能应该不是问题。 github地址运行时分admin进程与proxy进程, 一般 6032 端口是 admin 进程。6033是proxy。adm
2017-11-16 17:05:53
4613
原创 带PARTITION 的表,在slave中会system lock
问题背景master版本: 5.6.23-72.1-log Percona版本的 slave 版本: 5.7.19-17-log Percona Serverslave是通过 innobackupex 工具导出与恢复的。 配置后执行过mysql_upgrade升级数据,并重启。 某表tb1 有partition属性如: PARTITION BY KEY (target_id) PARTI
2017-10-30 15:28:27
1170
原创 mysql-5.7的坑
带 SUPER 权限的用户,写数据不会产生binlog。SUPER的 grant必需是 on . 所以全没binlog。默认强制使用ssl连接,如果主从中包含5.6版本,要强制指向hash算法:SSL_Cipher=’AES128-SHA’;MTS必需打开GTID—这不算坑,记录下而已。percona的xbackup,还不支持5.7(截至2017年初)
2017-07-05 13:59:15
743
原创 白话 MySQL TCP 通信协议-5分钟理解
MySQL协议简短说明大致上采用一问多答的方式,由client发问。所有包头前3个字节为整个包的大小,第3个字节为此次应答中包的序号。故单包大小上限(2^24)-1=(16M-1)字节,序号0~255循环使用。client端第一次连接时,先由服务端发送一个handshake报文给客户端。handshake报文包含: 协议版本、服务端版本、协议支持(兼容)内容标志位(32位)、分配连接ID
2016-06-07 15:46:02
5448
翻译 XtraBackup/innobackupex 远程备份MySQL
XtraBackup2.2 暂时不支持最新的mysql-5.7 远程备份方法来源https://www.percona.com/forums/questions-discussions/percona-xtrabackup/8816-can-i-backup-remote-databases-from-my-local-server 方法就是:利用导入tar文件流,通过管道压缩,再直接通过管道传
2016-04-26 14:26:55
6739
原创 Docker 5分钟入门
环境要求64位os,centos7及以上。建议使用最新版本docker与docker-compose 官方文档:https://docs.docker.com 官方镜像:https://hub.docker.com compose: https://docs.docker.com/compose/ 在官方网站能找到所有支持,赖得看en的,可以继续看本书。 镜像站上能找到所有常用开源程序的镜
2016-04-22 16:57:54
799
原创 双A机房解决方案
双A机房即对服务来说双机房互备,即任意一个机房掉线(天朝内挖断电缆是随时随地发生的)服务依然可用。国内能公开号称自己有双A机房互备的,暂时我只听闻只有BTA,直接近距离听过公开演讲的是阿里与腾讯。但,也只是说到“有”的层次,底层上如何实现,使用什么技术等等,并没有透露。事实上,这些细节,足够以说上一整天,甚至好几天;并且真正参与其中实现的技术人员肯定非常多,也并不是一个人能说清楚。为什么这样说?双A
2016-03-30 14:47:06
4507
原创 CentOS-7 下 systemctl 管理 mysql-5.7的不同,配置jemalloc
mysql-5.7 的 mysqld_safe去哪了?在CentOS-7下全面使用systemctl管理服务,包括mysqld,使用ps命令时见不到mysqld_safe。并且安装完mysql-5.7也找不到mysqld_safe安装完初始化mysql基本文件时,也不再使用mysqd_safe, 而是改用 mysqld –initialize 或 –initialize-insecure以上
2016-03-16 15:42:09
6476
原创 备忘:Alter Table中: ALTER vs CHANGE vs MODIFY COLUMN 区别
三者区别在于:ALTER COLUMN 改默认值的。Used to set or remove the default value for a column. Example:ALTER TABLE MyTable ALTER COLUMN foo SET DEFAULT 'bar';ALTER TABLE MyTable ALTER COLUMN foo DROP DEFAULT;CHANGE
2016-03-15 14:30:10
7036
原创 备忘:win10下共享(samba)给CentOS-6
高能警告:win10默认自动升级,并各种错误、蓝屏、无端端重启,截止目前为止,未升级win10切不要升。坑Win10开启某目录共享后,出现win系列机器能ping通,linux系必需将Win10的防火墙关闭才行。CentOS-6中smbfs文件系统已不支持,要使用cifs,安装:yum install cifs-utils.x86_64 -ymount -t cifs -o username
2016-03-07 11:47:28
4355
原创 nginx的http2.0性能太逆天了,HTTPS网站性能优化
背景我们七层负载层,使用了5台24U+64G内存的物理机支行nginx做https加解密与proxy_pass。每天上下班时段,5台机CPU基本在50%左右,算是计算型。 优化手段:keepalive、换TLS1.2加密算法优化(参考:1,2)等,收效不大。 特别简明一下keepalive选项,不论服务端如何支持,关键是客户端不跟你keep,你玩个屁。测试过程硬件: 24U+64G物理机2台,
2016-03-03 12:20:35
35196
原创 备忘:CentOS-7 使用systemctrl 管理的服务,文件打开数上限1024要改
改要 文件 中 /etc/systemd/system.conf 以下两个值DefaultLimitNOFILE=1024000DefaultLimitNPROC=1024000并且要重启机器 --- 反正 我是直接重启机器如不改,systemctrl start mysqld 无论配置怎么改,最大文件数上限都是1024
2015-12-31 10:56:53
6539
原创 GoLang Channel与mutex的选择,性能差不多
go官方应该是更推荐使用chan https://github.com/golang/go/wiki/MutexOrChannel以下代码用于测试性能 — 不确保思路是正确的。package mainimport ( "fmt" "sync" "time")type Op struct { key int val int}var lock sync.Mu
2015-11-17 17:37:27
5503
原创 bash: ulimit: open files: cannot modify limit: Operation not permitted
# ulimit -n 10000000-bash: ulimit: open files: cannot modify limit: Operation not permitted遇到这个错,要加大 /etc/sysctl.conf 中的两个值 fs.nr_open,进程级别, nr_open 总是应该小于等于 fs.file-max。 fs.file-max,系统级别马上生效:
2015-11-16 21:58:49
4317
原创 利用openresty-lua生态修改upstream后端服务
0.动态upstream的好处openresty作者,最近也要开源(在我编写此文章时还没开源)他们已经使用的balancer-by-lua 特性,进展issues。能动态修改upstream,使用反向代理proxy_pass, 对后端进程或机器进行:动态的负载均衡控制;平滑上下线服务,升级服务;高可能保证–自动踢离线服务下线;1.先说原理想法参考自<http://sosedoff.com/2
2015-11-04 10:01:11
15939
原创 [Elasticsearch]查询语法速查
0x01 基本语法基本语法是 [GET|POST] http://domain.com/you_index_name/type1,type2/_search{?search_type=count|scan|…} 注意,随着ES版本变化,搜索语法也有小调整。本文以1.7为准。全基于rest式http调用。 其中GET方法支持在body传参数。_search 是关键字,以此结束表示搜索行为,可以
2015-10-29 17:43:45
27349
原创 官方mysql数据跨多硬盘方案,执行重建或修复表时,会使mysqld崩溃
MySQL遇到单硬盘IO性能不足时linux下 可使用软链对目录甚至单个文件解决跨硬盘问题。注意的是,官方并不推荐,官方文档 中说可能遇到不可预知的问题。 实践中,我试过对目录进行建软链,生产环境下,过100G的数据,没问题。对单个*.ibd文件建软链,正常的sql也不会有问题。但alter语句–重建表时,就直接把软链文件当文件复写,即跨硬盘的目标.ibd文件直接被无视。官方的跨硬盘方案是:
2015-10-15 12:44:46
2652
原创 通过触发器解决统计,count(*)问题
单表过千万,以按用户分表1024个,count(*)统计还是会慢 所谓的慢,是指高并发了,MySQL就痿了。SAS硬盘,随机IO速率到达10~15M,IO就基本是100%了。这时就呵呵了。CPU有巨大的剩余也没用,内存也帮不上忙,只能SSD才能解决。 所谓通过外问程序--异步事件之类的,去加1,减1地统计结果--好像是一种方案。最终上线后,数据量一大,并发量一大,数据最后出来负数---
2015-10-09 20:08:17
4683
原创 一个TCP连接池的自我修养-如mysql-client、http-client、redis-client
单服单天过亿请求中,出现0.0001%的500怎么回事?日志中不定时出现 mysql gone away,connect timeout, reset by beer等错,原因不明。access-log同样不定时出现5xx错。感觉MySQL运行正常,没压力,没慢查,sql使用主键查询–不知道问题在哪?连接mysql的代码使用keepalive。这个时候,你是否怀疑过是连接库的问题?一个TC
2015-10-09 19:57:59
4108
1
原创 当django出现500时,邮件报告敏感信息过滤功能-- 1.4以上版本支持。
使用方法https://docs.djangoproject.com/en/dev/howto/error-reporting/#django.views.decorators.debug.sensitive_post_parameters
2014-05-23 11:50:42
1063
原创 python-requests 必需如下使用才能保持keep-alive
python-requests 必需如下使用才能保持keep-aliveimport requestssession = requests.session()session.get('http://www.qq.com')session.get('http://www.qq.com')#输出如下>>INFO:requests.packages.urllib3.connecti
2014-05-13 17:57:16
29145
1
原创 iptables restart后不会重载sysctrl.conf的配置,需要代表性iptables-config文件
解决方法来自:http://serverfault.com/questions/471464/yum-not-updating-etc-rc-d-init-d-iptables
2014-04-22 10:28:59
3034
原创 进程启动后使用taskset进行cpu绑定
[root@177qing ~]# cat cpu_affinity.sh #!/bin/shopenresty=/usr/local/openresty/nginx/sbin/nginxnginx=/usr/local/nginx/sbin/nginxtaskset_affinity_cpu(){ exec=$1 pid=`ps -ef| grep $exec | awk '
2014-04-11 16:07:33
1866
转载 salt-minion重启自己的方法
参考https://github.com/jollyroger/salt-states/blob/master/salt/minion/init.slsrestart_minion: cmd.wait: - name: "echo 'invoke-rc.d salt-minion restart'|at now + 1 min" - order: last - watch:
2014-03-11 17:53:48
4947
原创 uwsgi使用经验, uwsgi异步任务
1. nginx 报 readv() failed uwsgi+nginx搭建的server,发现当用post请求时,会返回数据超时。查了一下nginx中的error.log:[error] 16833#0: *158 readv() failed (104: Connection reset by peer) while reading upstream, client: 10.20.1
2013-06-25 15:50:14
5639
原创 [例子]Linux下shell批处理文件的几种方法
附上网友们总结出来的方法如下(以批量解压tar文件为例):第一:for tar in *.tar.gz; do tar xvf $tar; donefor tar in *.tar.bz2; do tar xvf $tar; done第二:用tar命令批量解压某个文件夹下所有的tar.gz文件ls *.tar.gz | xargs -n1 tar xzv
2013-06-08 12:20:59
5690
转载 [转]Nginx 做负载均衡的几种轮询策略
转自http://blog.sina.com.cn/s/blog_9c3ba23d01010rof.html一、nginx的upstream目前支持负载均衡方式的分配1、RR(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。例如: upstream tomcats { server 10.1.1.107:88
2013-06-04 10:07:46
1895
原创 使用celery中的schedule起定时任务,或叫计划任务
参看:http://stackoverflow.com/questions/5361521/celery-task-schedule-celery-django-and-rabbitmqcelery 文档:http://docs.celeryproject.org/en/master/userguide/periodic-tasks.html
2013-03-12 18:23:40
7517
原创 真正的No module named _imagingft的解决方案
wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz直接build 你会发现依赖库JEPG 或者freetype2没有。[root@qing186 Imaging-1.1.6]# python setup.py buildrunning buildrunning build_pyrunning build_ext----
2013-03-08 15:56:45
1739
原创 django+celery注意事项
按照celery官方文档:configuring-your-django-project-to-use-celery有个比较坑爹的事,task的定义必需要在 tasks.py 文件即加入到 INSTALLED_APPS = ( 'proj.app') 在app目录下必需有一个tasks.py文件定义异步任务。补充:另一个方法是在settings中加入:CELER
2013-02-26 11:01:56
1667
原创 [备忘]mysql中varchar中后面的长度能保存几个中文字符-UTF8下
CREATE TABLE `t1` ( `name` varchar(4) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 上面这个表,name字段只能保存4个utf8字符,即4个中文。insert into t1(name) values('天才我才必有用');结果:mysql> select * from t1;
2013-01-17 11:44:58
936
原创 坑爹阿,python 2.x 的版本中,binascii.crc32计算出来的crc32带负号
In [32]: binascii.crc32("我们")Out[32]: -603163415根據官方文件,在 Python 2.x 的版本中,binascii.crc32 所計算出來的 CRC 值域為 [-2^31, 2^31-1] 之間的有號整數,為了要與一般 C 所實作的 CRC 結果作比對,需要將其轉為無號整數,所以加上「& 0xffffffff」這段來做轉換。如果是 Pyt
2013-01-08 11:15:32
5288
原创 windows下使用boost编译levelBD小记。
使用boost编译leveldb的好处是xp下能用,本博客上一篇文章编译出来的因为不是使用google官方代码,编译出来不支持xp。本次使用官方源,windows分支,xp运行通过。一)。下载boost :http://iweb.dl.sourceforge.net/project/boost/boost/1.52.0/boost_1_52_0.tar.bz250多M,
2012-12-28 11:45:45
3026
原创 windows下编译python的levelDB库
本人使用的是python2.6, 32位,附上编译出来的dll , [不支持xp]http://download.youkuaiyun.com/detail/toontong/4933540支持xp的下载:http://download.youkuaiyun.com/detail/toontong/4938865 levelDB的官方库在这: http://code.google.com/p/le
2012-12-27 13:13:05
8135
转载 Python扩展问题”unable to find vcvarsall.bat“的解决
转自:http://www.linuxidc.com/Linux/2011-08/39722.htm解决方法是》比较hack的方法是直接修改C:/Python32/Lib/distutils/msvc9compiler.pydef find_vcvarsall(version): return r'C:\Program Files (x86)\Microsoft V
2012-12-27 11:29:49
5161
leveldb-0.1 for windows support XP.win32-py2.6.exe
2012-12-28
ujson-1.18.win32-py2.6.exe
2012-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人