在单机并发上万的时候,发现 sendto 函数比较容易出现返回错误 EAGAIN,对应的错误消息为 Resource temporarily unavailable,这种情况下认为是应用层写入过快,导致网卡缓冲满了
使用这个命令来查看缓冲区现有大小
# ethtool -g eth1
Ring parameters for eth1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumb…… 阅读全文
Tag Archives: Linux
手工编译 apache 的一些琐碎
压测的时候用到 apache ab,但是 ab 本身支持的并发最大 1000,过了报错,修改源码 support/ab.c 把这行注释掉
apr_err("apr_socket_recv", status);
但是编译的时候各种依赖,手工解决好烦,首先出来 undefined reference to apr 系列的函数,查到这里,http://hi.baidu.com/yang171892…,说了
col…… 阅读全文
分支预测以及 gcc 的 __builtin_expect
在阅读代码的时候,发现有类似这种写法:
bvl = bvec_alloc(gfp_mask, nr_iovecs, &idx);
if (unlikely(!bvl)) {
mempool_free(bio, bio_pool);
bio = NULL;
goto out;
}
注意到第二行,if 的判断中,加入了一个 unlikely,这个东西是一个 CPU 指令的优化,用于分支预判,关于分支预判,可以看这个 s…… 阅读全文
函数返回对象时的问题
来看这个代码
#include <iostream>
#include <string>
#include <map>
std::map<std::string, std::string> mapHttpRequest;
std::string GetString(std::string strKey)
{
std::map<std::string, std::string>::iterator it = mapHttpRequest.find(strKey);
if (it…… 阅读全文
gcc 编译时动态静态库的问题
一般来说,动态静态库的问题,可以参考这个文章,http://blog.csdn.net/ast_224/a…
gcc生成静态库和动态库
一、库文件简介
简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态…… 阅读全文
gcc 编译时输出有问号
今天切到一台新的机器上去开发,编译的时候发现 gcc 的输出带着问号,就像这个样子
src/BusiObj.cpp: In member function ?.nt CBusiObj::DecodeUdp(int&, int&, const char*, int)?.
src/BusiObj.cpp:287: warning: format ?.d?.expects type ?.nt?. but argument 6 has type ?.ong unsigned int?
src/Busi…… 阅读全文
netstat 查看连接的时候打印进程名
这个本来是个很基本的需求啊,搜了一下,stackover flow 上面有讨论,在这里,http://stackoverflow.com/quest…
Try
ps -p $(lsof -ti tcp:80) o comm=,pid=
or
netstat -tlnp | awk ‘/:80 */ {split($NF,a,”/”); print a[2],a[1]}’
好麻烦,而且跑不了,后来发现加一个 -p 参数就可以了。…… 阅读全文
Linux 下删除乱码文件名的文件
使用 rz 往服务器上传文件的时候,出错了,遗留下来的文件名是乱码,这个问题,使用 rz -be 可以解决,可以顺利上传文件,但是在删除残留文件的时候发现悲剧了,查了一下看到这里,http://www.jb51.net/LINUXjishu…
linux下删除乱码文件名, 不废话:
1. ls -i 列出文件的节点ID, 如: 123456789
2. find ./ -inum …… 阅读全文
pthread_self 和 gettid 的性能区别
打日志的时候,我们希望把线程 id 打印出来,线程 id 有两个方法可以获取,gettid 和 pthread_self,前者是一个 Linux 的系统调用,后者是一个可移植的库函数,可移植性倒还好,因为也不怎么考虑跨平台,另外一个区别,就是他们的返回值不一样,这个可以看到这里,http://stackoverflow.com/quest…,有一个讨论,摘…… 阅读全文
STL set 的一些实现差异
侯捷大师在 STL 源码剖析中说道,set 的迭代器的值是不可改变的,这个本来很好理解,但是我神奇的在 visual studio 2005 上发现,神奇的事情总是会发生
#include <stdio.h>
#include <map>
#include <string>
#include <set>
int main() {
std::set<int> setInt;
setIn…… 阅读全文