gearman 源码学习笔记1
来源:互联网 发布:获取基址的文本源码 编辑:程序博客网 时间:2024/06/07 05:10
1年前和阿里的大牛们聊天。被告知etao网使用 gearman 做分布式的中间件使访问达到了 百万的qps。从次对gearman有了初步的认识。之前主导项目的时候决定使用gearman做 分布式。 但是当压力到达一定级别的时候。
gearman 产生了大量的 close wait 导致大量的worker 无法连到 gearman。试了各种办法无法解决从而产生了研究gearman源码的冲动。不说废话啦,从main说起。
首先命令行参数解析 gearman 竟然用boost_program.so 真tm蛋疼用这么一个小功能竟然要装个boost
boost::program_options::options_description general("General options"); general.add_options() ("backlog,b", boost::program_options::value(&backlog)->default_value(32), "Number of backlog connections for listen.") ("daemon,d", boost::program_options::bool_switch(&opt_daemon)->default_value(false), "Daemon, detach and run in the background.") ("exceptions", boost::program_options::bool_switch(&opt_exceptions)->default_value(false), "Enable protocol exceptions by default.") ("file-descriptors,f", boost::program_options::value(&fds), "Number of file descriptors to allow for the process (total connections will be slightly less). Default is max allowed for user.") ("help,h", "Print this help menu.")
在参数解析时比较重要的一个逻辑就是
if (threads == 0) { uint32_t number_of_threads= libtest::number_of_cpus(); if (number_of_threads > 4) { threads= number_of_threads; } }当没有指定-t的时候 默认工作线程的数量是cpu的数量,而当核数少于4个的时候将会变成单线程程序。当然大家都应该知道在 没有复杂业务逻辑和持久化要求的情况下。单纯提高线程数其实对于并发是没有太多帮助的。
下回将细说gearman如何利用libevent架构网络环境。
0 0
- gearman 源码学习笔记1
- gearman 源码学习笔记2
- gearman 源码学习笔记3
- 【Gearman学习笔记】分布式处理入门
- 【Gearman学习笔记】持久化存储队列
- 【Gearman学习笔记】分布式处理入门
- gearman worker源码分析(1)
- gearman 0.32 安装笔记
- gearman 入门使用笔记
- gearman 入门使用笔记
- gearman 入门使用笔记
- Gearman入门学习
- gearman-client与gearman-worker的示例源码-C++版
- Python Gearman 分析(1)
- Gearman
- gearman
- Gearman
- Gearman
- 把struts2的struts.xml配置文件分解成多个配置文件
- 项目中用flex 问题
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
- NYOj 63 小猴子下落
- android学习记录<二>
- gearman 源码学习笔记1
- ubuntu 14.04 启用nfs连接开发板
- UVA Live Archive的一个坑点
- 按照规范办事,仔细认真,不能回避问题
- hadoop2.6.0 完全分布式安装教程
- Objective-C中使用@try处理异常
- 关于MyEclipse/Eclipse调式
- Android应用层访问底层驱动的简易方法
- pthread_cond_wait()用法分析