
经验教训
文章平均质量分 53
Justlinux2010
新浪微博 justlinux2010
展开
-
只考虑节省空间造成的功能错误
在“经验教训”这个分类中,我会将自己工作过程中遇到的一些错误进行记录,防止以后再犯类似的错误,希望也能给其他人一些警示。其实在写代码的时候,每个人肯定都想将自己学到的一些忠告或者技巧应用在自己的代码中,但是如果利用不好,反而会弄巧成拙。有时,你遇见非常奇怪的BUG,大多数时候都是因为犯了一些你自己都认为“很二”的一些低级错误,或者过多地追求技巧。我今天犯的这个错误,就让我无比蛋疼。出现错误的代码如原创 2012-08-01 16:09:53 · 1643 阅读 · 0 评论 -
定义宏时千万不要把宏的“参数名”和宏中用到的结构体成员名相同!
C语言中的宏非常强大,可以利用宏来一些要经常用到的操作封装在一起,或者有时仅仅只是让代码看起来更整洁些,但是宏是没有类型检查的,所以使用时千万要小心。但是有时也可以利用宏的没有类型检查这个特性,实现一些特殊的需求。举个简单的例子来说,下面的两个函数:int conf_add_fd(conf_snd_t *conf_snd, int fd) { fd_snd_t *fd_snd =原创 2012-08-17 15:17:56 · 3200 阅读 · 0 评论 -
利用glibc中锁结构的信息解决死锁问题
首先非常感谢老丁和老李同学的帮助,没有他们这个问题估计又得搞很久。遇见这个问题,真是头疼。不熟悉代码、不熟悉流程,但是领导还是把活给排下来了(实在不解),只能硬着头皮找了。问题是这样的,cache服务器中有一个存储对象的哈希表,每次访问哈希表时都要获取hash_rwlock读写锁,现在进程在获取读锁时死锁。使用gdb进入3个worker进程,发现死锁的位置都一样,都是在获取hash_rwloc原创 2013-07-26 14:32:26 · 2153 阅读 · 1 评论 -
为什么服务器程序在部署时需要调度器?
随着互联网规模的不断扩大,服务器承载的压力也不断增加,对服务的质量要求也越来越高。最理想的情况是,使用低成本的服务器,承载更大的压力,并且7x24小时不中断服务。通常使用的方式就是部署集群,调度器+服务器+存储这样的架构。注意,集群不是单指的调度器,它是一个完整的系统,调度器只是集群的入口,起到负载均衡或内容调度的作用。还有一种方式是在服务器程序中加入集群的功能,使服务器节点之间可以通信,实现基于原创 2013-08-04 09:06:33 · 2275 阅读 · 0 评论 -
解决接收不到组播包的问题
目前用的集群是在应用层实现的,主要功能是实现在机器之间互转请求。今天在部署的时候,发现请求没有在节点之间互转,相同的请求发送一次后miss,第二次发送的时候还是miss。正常来说,第一次miss后会在集群内缓存一份,之后再有关于这个文件的请求不管发送到哪个机器都应该是hit的。集群之间的探活用的是组播消息,出现这种问题肯定是因为接收组播报文出了问题。之前用的时候都没有问题,所以先从环境入手来查原创 2013-09-05 15:04:05 · 42248 阅读 · 3 评论 -
解决mv命令导致的cman启动失败问题
参考资料:https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=667703 http://www.qingsword.com/qing/1086.html 今天使用cman来管理集群,在启动时报错,错误信息如下:[root@CentOS____102 ~]# serv原创 2013-10-30 19:08:29 · 3971 阅读 · 0 评论