[HTTPS]-工作流程

2013年9月26日 没有评论

工作流程(握手流程)
一、 抓包:服务端ssldump 客户端wireshark
二、 流程详细说明
三、 一些说明

一 抓包
1.1 SSL Handshake 介绍
SSL握手过程即完成身份认证和建立加密通道的过程,分为四种。
Full Handshake : 全流程握手,C/S双方从无到有建立SSL连接;
Resum session Handshake : C/S双方曾经建立过连接,但中途断了,SSL会话信息还有保留,只需要执行部分握手流程就可建立SSL连接;
Server Re-negotiation Handshake : 已经建立了SSL连接,但server端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;
Client Re-negotiation Handshake : 已经建立SSL连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。
阅读全文…

分类: 技术笔记 标签:

[HTTPS]-基础-密码学入门

2013年9月26日 没有评论

一 密码学概论
一般的数据加密模型:
01
图中秘钥K是一串秘密的字符串(或比特串)
加密公式 Y=Ek(X)
密文Y 等于明文X通过以K为参数的加密函数的运算后得到的值。
解密公式 X=Dk(Ek(X) )
通过运算以K为参数的解密函数,得到明文。
这里我们假设密钥K是一样的,实际上可以是一样的,也可以是不一样的(即使是不一样,这两个密钥也存在某种相关性)
在数据传输中间会有入侵者,窃听和篡改,我们加密的目的就是让这些入侵者都无功而返,但是这是一个动态的过程,没有永恒的安全,只有相对的安全,所以密码学是一个持续发展的。
阅读全文…

分类: 技术笔记 标签:

浅析Linux磁盘与文件系统(EXT2)

2013年9月23日 没有评论

一 磁盘简介

首先说明一下硬盘的物理组成:
圆形的磁盘,主要记录资料;
机械手臂,与机械手臂上的磁头;
主轴马达,可以转动磁盘,让机械手臂的磁头在磁盘上读写资料。

磁盘的组成:
磁区(Sector)为最小物理存储单元,每个磁区512 bytes;
将磁区组成一个圆,那就是磁柱(Cylinder),磁柱是分区(partition)的最小单位;
第一个磁区最重要,里面有:(1)主要开机区(Master boot record, MBR)及分区表(partition table),其中MBR占 446bytes,而 partition table占64bytes。

磁盘分区:
告诉操作系统 我这个磁盘在此分区可以存取的区域由A 磁柱到B磁柱之简单区块。也就是说,磁盘分区就是指定分区的起始与结束磁柱。
那么指定分区的磁柱范围记录在哪里?就是第一个磁区的分割表中,但是分割表仅有64bytes,因此最多只能记录4笔分区记录,这四笔记录为三个(primary) 一个(extended) 分区,其中扩展分区可以再划分出逻辑分区(logical),只有主分区和逻辑分区才能被格式化
阅读全文…

Redis2.4为何新增后台线程(转)

2013年8月19日 1 条评论

链接:https://github.com/redisbook/book/blob/master/redis-backgroud-thread.md

Redis 终于在 2.4 版本里引入了除主线程之外的后台线程,这个事情由来已久。早在 2010年2月 就有人提出aof的缺陷,提及的问题主要有:

主线程 aof 的每次 fsync(everysecond模式) 在高并发下时常出现 100ms 的延时,这源于 fsync 必不可少的磁盘操作,即便已经优化多次请求的离散小io转化成一次大的连续io(sina的同学也反映过这个问题)。
阅读全文…

分类: 系统架构 标签:

Redis thread model

2013年8月19日 没有评论

redis2.4之前版本都是单线程,只有一个主线程,存在很多性能问题,故在2.4版本中加入了后台线程,解决这些问题。(下篇文章会简单介绍单线程时的问题)
redis2.4启动后为单进程3线程模式。通过分析redis-2.4.16源码,得到了redis另外两个辅助线程的作用。
源码分析过程如下:
阅读全文…

分类: 系统架构 标签:

Get性能对比 [Redis] vs [Memcache]

2013年8月19日 没有评论

测试环境:同台server
测试工具:
redis-benchmark
memslap(libmemcached自带)
自制脚本,填充数据
软件版本:
redis-2.4.16
memcached-1.4.15
阅读全文…

分类: 系统架构 标签:

硅谷之行(二)计算机历史博物馆

2013年8月9日 1 条评论

计算机历史博物馆坐落在加州Mountain View,101公路北边,1401 N Shoreline Blvd。沿着路往西开,很近就是LinkedIn。
距离我们住的sunnyvale非常近。
我们对此博物馆早有耳闻,在国内就计划一定要参观学习下,这次机会一定不能放过。参观之后感觉真是不枉此行,使自己对计算机的发展有了整体的认识,以前只停留在书本上,这次亲眼所见后,印象更加深刻。(怎么像小学生的观后感啊,不过我的感受真的是这样)。通过这些展出的设备,感觉历史就这样活生生的在眼前。看到了牛郎星8800,看到了Jobs从施乐购买的系统和鼠标,(这些之前都是在报道和硅谷海盗的电影中见过)看到了最早的移动设备游戏设备。。。
阅读全文…

分类: 工作生活 标签:

mysql压测后记

2013年8月9日 没有评论

在压测过程中走了一点弯路,记录下。
1 最初压测只是单进程,对mysql的压力上不去,当时认为mysql可能能力就是这样了,后来估算了线上数据的情况,我测试的结果跟线上差的比较多。后想到用多线程跑下,结果比较理想。

2 多线程压测时innodb_thread_concurrency = 16 (这个参数被调到128失败)
在压测过程中,发现show engine innodb status 中大量在队里中等待的insert,手册上建议根据cpu核数硬盘数量调整,但是我想尝试多开线程的效果,果断调整为128,结果测试效果不是很好,只有正常值的70%左右,故又根据手册调整回原来数值。

3 perl的DBI 包应该是非线程安全的,创建连接后共享给线程,在线程里调用的话会报错。所以果断采用在线程内创建连接,每个线程使用自己创建的连接,这样就ok了,而且比单连接内多线程效果还给力。(另这个就要mysql的最大连接数配合了)

分类: Mysql数据库相关 标签:

mysql写性能测试记录二

2013年8月8日 没有评论

环境同上篇

1台施压服务器压测单mysqld实例
insert value 200 (每insert 插入200条数据)
4core8g  
200thread  13600 insert/s
iostat (以下指标为平均值)
wkB/s: 37104 wkB/s 平均37M左右
await: 62.94ms
%util: 91.85
dstat
csw:5000  上下文切换

2台施压服务器压测单服务器2 mysqld实例,3306/3307
insert value 200 (没insert 插入200条数据)
4core8g  
200thread  15000 insert/s
iostat (以下指标为平均值)
wkB/s: 40026 wkB/s 平均40M左右
await: 110ms
%util: 99.9
dstat
csw:5000  上下文切换

结论:
1、 insert value 200 可以充分挖掘mysql的写入能力,显著提高插入效率,所以开发同学拼sql时最好单insert多value方式拼写。
2、 单机多mysqld实例对于挖掘服务器写入有一定提升,通过测试大概能提升10%,但是和实例数增加不成线性关系,效果不显著。
3、 insert value 200 单mysqld实例时,磁盘IO已经接近瓶颈(%util: 91.85),所以单机多实例在大量写入的场景意义不大。
分类: Mysql数据库相关 标签:

mysql写性能测试记录一

2013年8月7日 没有评论

背景:最近在考虑扩容预案(散库or散表or散实例),各种预案都需要场景数据支持。check是否符合预期。
环境:
云服务器 CentOS release 6.3 (Final) x64
4core8g
4core16g
2core4g
写入表结构:
CREATE TABLE `stest` ( `a1` int(11) DEFAULT NULL, `a2` int(11) DEFAULT NULL, `a3` varchar(255) DEFAULT NULL, `a4` varchar(100) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
无主键无索引
mysql配置文件:测试过程中保持一致
关键参数
innodb_flush_log_at_trx_commit = 0
innodb_thread_concurrency = 16
innodb_io_capacity default
max_connections = 10000
innodb_file_per_table=1
innodb_flush_method default
阅读全文…

分类: Mysql数据库相关 标签: