- 博客(13)
- 资源 (17)
- 收藏
- 关注

原创 【高效server实践】--旁路监控系统
写完server程序运行起来后,并非就高枕无忧了,还需要旁路的监控系统时刻关注程序的健康程度,并做相应的自动化干预。一个完善的server监控系统应该涵盖以下方面1:程序down掉,自动拉起在linux环境下,只要简单的shell脚本即可做到:使用grep查看程序是否down掉2:进程僵死判断判断进程是否僵死有多种方法:业务拨测,心跳上传,log文件是否滚动(适
2016-02-16 17:42:14
1651

原创 【高效server实践】--协议先行
网络协议是为计算机程序之间进行数据交互的规则和标准,在正式写server之前应该先定好协议,方便C/S两端同时开发良。好的协议应该体量小,封包解包快,良好的扩展性,不可直接读,跨语言,跨平台。目前流行的几种网络协议对比如下:1:json是应用较为普遍的协议,它支持键值,数组,嵌套,满足各种数据传输需求。有良好的可读性(有些程序数据的私密性可能不希望有可读性),:跨平台跨语言。但是json的
2016-02-01 11:33:47
570

原创 【高效server实践】--memcached网络框架剥离实践
memcached通过epoll(使用libevent)实现异步服务,主要由"主线程"和多个"worker线程"构成,主线程负责监听网络链接,并且accept连接。当监听到连接accept成功后,把连接句柄FD传给其中的一个空闲work线程处理。空闲的worker线程接收到主线程传过来的连接句柄DF后,将其加入自己的epoll监听队列并处理该连接的读写事件。 博主从memcahced剥
2016-01-20 17:12:18
495

原创 【高效server实践】--日志模块
log日志模块是软件程序的另一基础部分,开发者依赖于它进行debug,了解程序运行状态,分析程序性能等,是程序对开发都打开的一扇窗户一个健壮的log模块,应该具体以下功能1:log可分级输出log一般有五层分级即可:debug,info,warn,error,tracedebug是用于开发者调试输出的记录,通过此开发者可以快速定位问题info是记录程序输入,输出和一些关键业务或
2016-01-20 14:11:30
425

原创 【高效server实践】--配置文件
配置文件是一个软件程序的基础部分,是用户可以改变的程序运行的方法。配置文件一般是在程序启动的时候读取,并初始化程序,当然写的好的配置模块也支持在程序运行时重新加载配置文件,并做相关的变化。 良好的配置模块应该具体以下功能 1:配置文件可以按块配置,这样就允许不同的块里有相关的配置(程序可能依赖很多外部组件,而外部组件一般都要配置ip) 如: [MONGO] db=test1
2015-11-04 18:00:36
422
原创 【高效server实践】--redis性能分析
一:Redis自带了benchmark以便用户做性能分类Linux性能测试命令行如下(指定数据大小为1K,100用户并发,共发送10Ww个请求):./redis-benchmark -h 192.168.1.33 -p 6379 -d 1000 -c 100 -n 100000执行结果如下,可以看出写读操作响应在毫秒级,写操作qps在4W。读操作qps在3.4 根据服务
2016-03-29 15:11:29
2875
原创 【高效server实践】--memcached内存管理
Memecache内存管理是采取预分配的形式,避免优先避免频繁malloc和free带来的内存碎片。Memcache是驻欧洲断裂slab的形式来管理内存:每个slab页默认大小为1M,不同的slab里会1到n个分割成大小不同chunk内存块,chunk是实际存储数据的最小单元。存储数据的时候根据数据的大小选择从相应的slab分配空闲chunk来存储。 memcached -u ro
2016-03-14 14:05:02
476
原创 Linux下keepalived+Mysql主主同步实现数据库高可用实践
1):编辑mysql配置文件/etc/my.cnf,选定主主同步的数据库[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlsymbolic-links=0log-bin=binlogbinlog_format=mixedserver_id=1//主备两台mysql的serv
2016-03-01 16:17:06
4112
原创 基于c++实现的几种排序算法
插入排序是有一个已经有序的数据序列,在这个已经排好的数据数列中插入一个数,要求插入后此数据序列仍然有序。这种算法适用于少量数据的排序,时间复杂度为O(n^2)void insertsort(int a[],int len){ for(int i=1;i int j=i-1; int key=a[i]; while(j>=0 &&
2016-02-23 11:49:40
370
原创 基于c++的单链表,双向链表操作以及环
单向链表:生成,头插入,尾插入,某个元素后面插入,删除某元素#includeusing namespace std;struct Node{ int data; Node* next;};Node* create(){ Node *h=NULL,*p=NULL,*tmp=NULL; int a; scanf("%d",&a); while
2015-10-07 11:08:43
635
原创 Linux下socket优化
一:非阻塞socket1:阻塞socket和非阻塞socket区别读操作对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket,s
2015-09-30 16:18:52
653
原创 Mysql数据优化需知
一:事务隔离级别: 1:未提交读(脏读:) 2:提交读(推荐),重复读(幻读,mysql默认),串读(锁)2:数据库复制模式:语句复制(Mysql默认),行复制(数据库能正确恢复)SET GLOBAL BINLOG_FORMAT = ROW;SET SESSION BINLOG_FORMAT = ROW;3:myasim和innodb的区别:myas
2014-10-31 16:00:38
534
集成了电子商城系统,新闻发布系统,新闻采集系统
2011-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人