SlideShare ist ein Scribd-Unternehmen logo
1 von 23
高级服务器设计和实现 3
—— 架构、手段与工具箱
余锋 (mryufeng@gmail.com)
2008-06-08
脚本语言
• Lua
• Python
工程文件
• ACE 的 mpc
• Gnu autoconf
内核应用
• Tux
• Lvs
• Iptable
内核模块
• 内核模块
• 用户空间程序
• Netlink
• Tcpsplice
测试工具
• Tsung
• Loadrunner
• Luasocket
收集性能数据
• 纯文本
• Gnuplot
完善的日志系统
• 方便诊断
• 便于观察系统运行状态
• log4X
常用工具
• Wireshark
• Hping2
• Socat
• Nc
• Strace
• Systemtap
• Lsof
• webbench
测试
• Xunit 单元测试
• 覆盖测试
• 压力测试
除测试之外的手段
• 代码 Profile
• 外部程序驱动
硬件配置
• 多核 32 核?
• 64 位机器
• 大内存
• 快速 IO
健康监控
• SNMP
• CSV
• HTML
• DUMP
负载均衡( Load Balance )
• 基于特定服务器软件的负载均衡
• 基于 DNS 的负载均衡
• 反向代理负载均衡
• 基于 NAT 的负载均衡技术
操作系统微调
• SystemTap
• 协议栈微调
• 内存子系统微调
进程流水线
• Cgi 思路
• Fastcgi 思路
• 形成 pipe line
• 容易整合各种语言实现的系统
多路变换成单路
• Ajp13 思路
• 极大简化服务端编程
集群,提高可用性
• 硬件
o Big IP F5
o NetScaler
• 软件
o Haproxy
o LVS
内存数据库
• Extremedb
• Memcached
• mnesia
TIPS1
• 操作系统采用 Linux 2.6.x 内核,不仅因为它的高性能,更因为它大开源(这并不是说
其他的 UNIX 或者是 BSD 衍生物不开源)给程序设计带来的便利,我们甚至可以把服
务做到内核空间。
• 多路复用采用 epoll 的“电平触发” (Level Triggered) 模式,必要时可以采用“边缘
触发” (Edge Triggered) ,但要注意防止数据停滞。
• 为避免数据拷贝可以采用 sendfile 系统调用发送小文件,或者是文件的小部分,注意避
免 sendfile 因磁盘 IO 而导致的阻塞。
• 如果服务操作设计大量磁盘 IO 操作,应选用 Linux 内核提供的异步 IO 机制,其对应的
用户空间库为 libaio ,注意:这里提到异步 IO 库并非目前 glibc 中附带的异步 IO 实现。
• 如果同时有多个数据需要传输,采用 writev/readv 来减少系统调用所带来的上下文切
换开销,如果数据要写到网络套接字文件描述符,这也能在一定程度上防止网络上出现
比较小帧,为此,还可以有选择地开启 TCP_CORK 选项。
• 实现自己的内存管理,比如说缓存数据,复用常用数据结构等。
• 用多线程替代多进程,线程库当然选择 nptl 。
• 避免进程 / 线程间非必要的同步,保持互斥区的短小。
TIPS2
• 目前 SMP 系统和多核心 CPU 比较常见,如果还是仅采用单进程(线程)的多
路复用模型,那么同一时间将只有一个 CPU 为这个进程(线程)服务,并不能
充分发挥 CPU 的计算能力,所以需要至少 CPU ( CPU 核心)数目个进程(线
程)来分担系统负担。有一个变通的解决方案:不用修改源码,在服务器上运
行两个服务程序的实例,当然这个时候服务端口应该是不同的,然后在其前端
放置负载均衡器将流量和连接平均分配到两个服务端口,可以简单的通过
DNAT 来实现负载均衡。其实,这个时候我们已经把多 CPU 或者是多核系统看
成了多个系统组成
• 为了提高服务器的性能,单纯的依靠提高单个服务器的处理能力似乎不能奏效
,况且配置越高的服务器花销也就越高,为此人们经常采用服务器集群的方式
,通过把计算尽可能地分配到相对比较廉价的机器上单独完成,籍此来提升服
务器的整体性能,事实证明,这种体系结构不仅是切实可行的,而且还能提高
服务器的可用性,容错能力也较强。在网络服务器方面, Linux 内核中的由国
人章文嵩先生设计的 IP 层负载均衡解决方案 LVS 比较有名,还有就是工作于
应用层的 haproxy 和刚刚起步的 l7sw 。
相关文档
• tuning_linux.pdf
• C10k
• Erlang
Q & A

Weitere ähnliche Inhalte

Was ist angesagt?

淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践Feng Yu
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触Feng Yu
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Jinrong Ye
 
5.6 nutshell - 性能优化
5.6 nutshell  - 性能优化5.6 nutshell  - 性能优化
5.6 nutshell - 性能优化Hui Liu
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011Yiwei Ma
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosqlknuthocean
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端moonbingbing
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Tim Y
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践Wensong Zhang
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223Jinrong Ye
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linuxFeng Yu
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)Tim Y
 

Was ist angesagt? (20)

淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用
 
5.6 nutshell - 性能优化
5.6 nutshell  - 性能优化5.6 nutshell  - 性能优化
5.6 nutshell - 性能优化
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011
 
A
AA
A
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
java title
java titlejava title
java title
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 

Andere mochten auch

Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具Feng Yu
 
P2P 设计经验谈
P2P 设计经验谈P2P 设计经验谈
P2P 设计经验谈Feng Yu
 
高级服务器设计和实现1
高级服务器设计和实现1高级服务器设计和实现1
高级服务器设计和实现1Feng Yu
 
Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践james tong
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术Feng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
了解网络
了解网络了解网络
了解网络Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 

Andere mochten auch (12)

Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具
 
P2P 设计经验谈
P2P 设计经验谈P2P 设计经验谈
P2P 设计经验谈
 
高级服务器设计和实现1
高级服务器设计和实现1高级服务器设计和实现1
高级服务器设计和实现1
 
Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
Systemtap
SystemtapSystemtap
Systemtap
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
了解网络
了解网络了解网络
了解网络
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 

Ähnlich wie 高级服务器设计和实现3

MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
调试技术的应用
调试技术的应用调试技术的应用
调试技术的应用延胜 黄
 
100305 trac-plugin-dev-intro
100305 trac-plugin-dev-intro100305 trac-plugin-dev-intro
100305 trac-plugin-dev-introZoom Quiet
 
OpenRISC whsap
OpenRISC whsapOpenRISC whsap
OpenRISC whsap柏毅 李
 
SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉ptcracker
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战rfyiamcool
 
Linux基础
Linux基础Linux基础
Linux基础zhuqling
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3Angel Boy
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送OpenRestyCon
 
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux introChang Mt
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Dahui Feng
 

Ähnlich wie 高级服务器设计和实现3 (20)

MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
调试技术的应用
调试技术的应用调试技术的应用
调试技术的应用
 
Some tips
Some tipsSome tips
Some tips
 
100305 trac-plugin-dev-intro
100305 trac-plugin-dev-intro100305 trac-plugin-dev-intro
100305 trac-plugin-dev-intro
 
OpenRISC whsap
OpenRISC whsapOpenRISC whsap
OpenRISC whsap
 
SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战
 
Linux基础
Linux基础Linux基础
Linux基础
 
Linux system security
Linux system securityLinux system security
Linux system security
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Win dbg入门
Win dbg入门Win dbg入门
Win dbg入门
 
Windbg入门
Windbg入门Windbg入门
Windbg入门
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送
 
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux intro
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
 

Mehr von Feng Yu

了解内存
了解内存了解内存
了解内存Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng Yu
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm IIFeng Yu
 

Mehr von Feng Yu (7)

了解内存
了解内存了解内存
了解内存
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
Go
GoGo
Go
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
 

高级服务器设计和实现3