Redian新闻
>
C10M 练习 step 1: 10M sockets
avatar
C10M 练习 step 1: 10M sockets# Programming - 葵花宝典
I*y
1
【 以下文字转载自 Military 讨论区 】
发信人: Inquiry (We will defeat SARS), 信区: Military
标 题: 温州银行业不良率创新高,招行建行深陷其中
发信站: BBS 未名空间站 (Fri Nov 29 01:48:18 2013, 美东)
本报讯(记者 孙昌銮) 浙江温州银监分局近日的统计数据显示,温州银行业今年10
月末的不良贷款率达到4.31%,创下近年来的新高。温州市长陈金彪在前日该市社会信
用体系建设会上表示,要对少数企业逃废债的行为加大打击力度。
自2011年以来,民营经济发达的温州接连发生民间借贷危机和中小企业资金链断裂
等事件,该市的银行业贷款不良率从2011年6月的0.37%一路攀升,接连创下新高,今年
3月突破4%的高点后虽有所下降,但近几月又开始反弹,自10月末不良贷款额为311.3亿
元,不良贷款率达到4.31%。其中,招商银行温州分行、建设银行温州分行不良率均超
过10%,分别达到10.33%和10.01%。
在温州银行业不良贷款率创下新高的同时,中小企业的融资困难越发明显。温州一
家小服装厂的老板黄先生表示,尽管温州金融改革一年多以来曾推出多项创新措施,但
却很难惠及到广大中小企业,由于实体经济的持续低迷和房价的接连下跌,使得企业经
营状况难以改善,资金之渴仍难缓解。时值年底,企业用钱的地方很多,目前他的重心
就是四处筹钱发工资。
avatar
y*g
2
一年多前拿到了绿卡?之后的日子感觉失去了原有的动力。以前拼命干活保身份,现在
开始混日子了。
avatar
t*o
3
支票clear 都快一个月了, 货还没有shipping, 怎么办
avatar
f*u
4
例如什么system has new window什么的
而且声音调节的直接按键盘的声音不管用,非要按着Fn和声音键才可以调节声音
这个是怎么回事阿
怎么调节回去阿
avatar
S*A
5
我觉得大家讨论很热情,
我们来做点练习吧,不要光说不练。
下面这个程序是暴露一些写 C10M 可能碰到的问题,
看看大家有没有神魔解决方法。如果有,请贴程序或者
脚本,方便他人重复实验.
如果实在没有人贴答案,我也可以公布我自己的。
#include
#include
#include
#include
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < 1024*1024*10; i++) {
int s;
s = socket(PF_INET, SOCK_STREAM, 0);
if (s < 0) {
char buffer[1024];
snprintf(buffer, sizeof buffer, "socket #%d", i);
perror(buffer);
return 1;
}
}
return 0;
}
这个程序运行,
$ ./test-fileno
socket #1021: Too many open files
$
欢迎大家贴解决方案。
avatar
f*g
6
自认凡人的话,就发展点兴趣爱好,享受生活吧。
闲不住就挑槽,涨点钱,换个好点的工作,哪怕只是做的东西有意思点,离家近点什么
的。再闲就打点零工,赚钱,要卡不就是为了自由么?

【在 y****g 的大作中提到】
: 一年多前拿到了绿卡?之后的日子感觉失去了原有的动力。以前拼命干活保身份,现在
: 开始混日子了。

avatar
s*y
7
可见, 网上购物还是用信用卡的好。多花了一点钱,主动权就在自己手里,省心啊。
楼主这种情况,直接打电话给银行charge back拉倒。
avatar
S*I
8
System Preferences->Keyboard

【在 f*******u 的大作中提到】
: 例如什么system has new window什么的
: 而且声音调节的直接按键盘的声音不管用,非要按着Fn和声音键才可以调节声音
: 这个是怎么回事阿
: 怎么调节回去阿

avatar
g*g
9
我的实现最简单,20台机器,每台十个 VM, 每个5万连接。 ephemeral port也够用。
不牛逼,但是很实用。
avatar
u*s
10
agree.

【在 f*****g 的大作中提到】
: 自认凡人的话,就发展点兴趣爱好,享受生活吧。
: 闲不住就挑槽,涨点钱,换个好点的工作,哪怕只是做的东西有意思点,离家近点什么
: 的。再闲就打点零工,赚钱,要卡不就是为了自由么?

avatar
t*o
11
支票付可以 charge back?

【在 s*******y 的大作中提到】
: 可见, 网上购物还是用信用卡的好。多花了一点钱,主动权就在自己手里,省心啊。
: 楼主这种情况,直接打电话给银行charge back拉倒。

avatar
f*u
12
这个搞定了,声音调节键可以用了
可是那个操作的声音怎么去除阿,无论我做什么操作,就会念出来的,比如system has
new window什么的,
avatar
S*A
13
注意神魔都不改的话,程序失败在 1024。
所以你的 5 万连接要解决同样的问题。你能给出 5 万的解决办法吗?
对这个问题,可以解决 5 万同样方法应该可以用在 10M 上。

【在 g*****g 的大作中提到】
: 我的实现最简单,20台机器,每台十个 VM, 每个5万连接。 ephemeral port也够用。
: 不牛逼,但是很实用。

avatar
y*g
14
是个凡人,可是不想这么混下去。毕竟才30出头。

【在 f*****g 的大作中提到】
: 自认凡人的话,就发展点兴趣爱好,享受生活吧。
: 闲不住就挑槽,涨点钱,换个好点的工作,哪怕只是做的东西有意思点,离家近点什么
: 的。再闲就打点零工,赚钱,要卡不就是为了自由么?

avatar
h*w
15
不可以

【在 t******o 的大作中提到】
: 支票付可以 charge back?
avatar
wy
16
system preference -> universal access. turn off voiceover

has

【在 f*******u 的大作中提到】
: 这个搞定了,声音调节键可以用了
: 可是那个操作的声音怎么去除阿,无论我做什么操作,就会念出来的,比如system has
: new window什么的,

avatar
h*c
17
$ resource is limited
you can lower your kernel debug level by number to see what happened.
if u r app dev, this is not 4 u, too deep
avatar
l*c
18
bso30出头拿到卡。。。
搞个破车rebuilt,打小工赚钱换大房子,没娃的生娃有娃的再生。。。

【在 y****g 的大作中提到】
: 是个凡人,可是不想这么混下去。毕竟才30出头。
avatar
t*o
19
我看了一下 BBB, 最近好多 delivery 投诉

【在 h*****w 的大作中提到】
: 不可以
avatar
f*u
20
谢谢,几乎所有的都打开看了,就差这个了,真晕阿
avatar
S*A
21
多明显啊,当然是有神魔系统限制啦。
这也是我设计这个练习的目的啊,暴露可能遇到的
情况。
有具体的解决方案吗?
脚本,程序,或者如何改 XXX 程序就可以运行通过了。

【在 h**********c 的大作中提到】
: $ resource is limited
: you can lower your kernel debug level by number to see what happened.
: if u r app dev, this is not 4 u, too deep

avatar
l*y
22
seems like all you mentioned is money-related, that doesn't solve the
problem.

【在 f*****g 的大作中提到】
: 自认凡人的话,就发展点兴趣爱好,享受生活吧。
: 闲不住就挑槽,涨点钱,换个好点的工作,哪怕只是做的东西有意思点,离家近点什么
: 的。再闲就打点零工,赚钱,要卡不就是为了自由么?

avatar
m*6
23
我也是上次买的12猫.昨天收到SHIPPINGCONFIRMATION.
我为了快专门用的CASHDEPOSIT, 结果还是很慢.
11号钱CONFIRM, 29才寄.
中间发EMAIL问过, 说现在活儿多,先寄金的,后寄银的.
极其鄙视他们着种不遵守约定的做法.CASHDEPOSIT应该是2-4天.
感觉他们做法和流程很随意, 而且经过着次泼动, 感觉他们价格没优势.

【在 t******o 的大作中提到】
: 支票clear 都快一个月了, 货还没有shipping, 怎么办
avatar
S*A
24
BTW, 这个跟 kernel debug level 没有太大关系啦。
你想如何 lower 呢?给个 command line.

【在 h**********c 的大作中提到】
: $ resource is limited
: you can lower your kernel debug level by number to see what happened.
: if u r app dev, this is not 4 u, too deep

avatar
h*w
25
最近因为材料价格的东西销路好,发货都极慢,我有个11号订的昨天才发出来(另一家).

【在 m******6 的大作中提到】
: 我也是上次买的12猫.昨天收到SHIPPINGCONFIRMATION.
: 我为了快专门用的CASHDEPOSIT, 结果还是很慢.
: 11号钱CONFIRM, 29才寄.
: 中间发EMAIL问过, 说现在活儿多,先寄金的,后寄银的.
: 极其鄙视他们着种不遵守约定的做法.CASHDEPOSIT应该是2-4天.
: 感觉他们做法和流程很随意, 而且经过着次泼动, 感觉他们价格没优势.

avatar
h*c
26
in real scenario met this kind of problem before
there is a kernel parameter decides max file descriptor numbers allowed,
forgot which file, different distro different file.
In fact, it was our former chief scientist found the problem, not myself
though at the solution given, I almost got it.
blah blah

【在 S*A 的大作中提到】
: 多明显啊,当然是有神魔系统限制啦。
: 这也是我设计这个练习的目的啊,暴露可能遇到的
: 情况。
: 有具体的解决方案吗?
: 脚本,程序,或者如何改 XXX 程序就可以运行通过了。

avatar
m*6
27
事件发展:
本来说好是30个一张SHEET的.今天收到, 都是散的!
我本来就是要买一SHEET看看.
这破公司不行啊.

【在 m******6 的大作中提到】
: 我也是上次买的12猫.昨天收到SHIPPINGCONFIRMATION.
: 我为了快专门用的CASHDEPOSIT, 结果还是很慢.
: 11号钱CONFIRM, 29才寄.
: 中间发EMAIL问过, 说现在活儿多,先寄金的,后寄银的.
: 极其鄙视他们着种不遵守约定的做法.CASHDEPOSIT应该是2-4天.
: 感觉他们做法和流程很随意, 而且经过着次泼动, 感觉他们价格没优势.

avatar
h*c
28
you can google, but you have to reboot

【在 S*A 的大作中提到】
: BTW, 这个跟 kernel debug level 没有太大关系啦。
: 你想如何 lower 呢?给个 command line.

avatar
s*y
29
昨天没说清楚,我原意是,如果楼主用信用卡付账,碰到这种情况,直接charge back
就可以了。
多付一点钱,省着被逼吃苍蝇。生气造成的损失往往比金钱上的要大很多。
avatar
S*A
30
you are getting closer.
Wow, it seems that I can be that chief scientist. Wuhaha.

【在 h**********c 的大作中提到】
: in real scenario met this kind of problem before
: there is a kernel parameter decides max file descriptor numbers allowed,
: forgot which file, different distro different file.
: In fact, it was our former chief scientist found the problem, not myself
: though at the solution given, I almost got it.
: blah blah

avatar
t*o
31
是呀, 以后不做 check or wire, 除非是 apmex 这样的 大 dealer

back

【在 s*******y 的大作中提到】
: 昨天没说清楚,我原意是,如果楼主用信用卡付账,碰到这种情况,直接charge back
: 就可以了。
: 多付一点钱,省着被逼吃苍蝇。生气造成的损失往往比金钱上的要大很多。

avatar
h*c
32
if you are a kernel contributor, maybe you can consider yourself.
That was a Java problem. like some horses drag a steam train.

【在 S*A 的大作中提到】
: you are getting closer.
: Wow, it seems that I can be that chief scientist. Wuhaha.

avatar
d*j
33
恩, 我也收到了。。。。
都是散伙

【在 m******6 的大作中提到】
: 事件发展:
: 本来说好是30个一张SHEET的.今天收到, 都是散的!
: 我本来就是要买一SHEET看看.
: 这破公司不行啊.

avatar
S*A
34
考,这个问题我知道如何解决啦。但是我说了就没有意思啦。
要不你 google 然后实验一下确认方案可行造福大家?

【在 h**********c 的大作中提到】
: you can google, but you have to reboot
avatar
m*6
35
有三个CAPSULE裂了, 大部分都有白雾.没几个好的.TNND!

【在 d*j 的大作中提到】
: 恩, 我也收到了。。。。
: 都是散伙

avatar
h*c
36
this is not a way of talking.
For me I know how to do it, but it is not related to my job.
namely, nobody pay me to do that.
like thesis supervisor, give you a guideline. we have to do all ourself.
science is the spirit and joy of exploring and discovering
avatar
S*A
37

OK. I understand. You can skip it. Any body else want to give
it a try?

【在 h**********c 的大作中提到】
: this is not a way of talking.
: For me I know how to do it, but it is not related to my job.
: namely, nobody pay me to do that.
: like thesis supervisor, give you a guideline. we have to do all ourself.
: science is the spirit and joy of exploring and discovering

avatar
g*g
38
ephemeral port range 要改,别的还真没记得有啥特别的。也没准 VM 本来就设好了
。你这个像是 file descriptor的问题,一狗应该能找到。

【在 S*A 的大作中提到】
: 注意神魔都不改的话,程序失败在 1024。
: 所以你的 5 万连接要解决同样的问题。你能给出 5 万的解决办法吗?
: 对这个问题,可以解决 5 万同样方法应该可以用在 10M 上。

avatar
j*a
39
ulimit -a

【在 S*A 的大作中提到】
: 我觉得大家讨论很热情,
: 我们来做点练习吧,不要光说不练。
: 下面这个程序是暴露一些写 C10M 可能碰到的问题,
: 看看大家有没有神魔解决方法。如果有,请贴程序或者
: 脚本,方便他人重复实验.
: 如果实在没有人贴答案,我也可以公布我自己的。
: #include
: #include
: #include
: #include

avatar
b*e
40
lOL
avatar
S*A
41

这个当然是 file descriptor 问题,多明白啊,出错信息写着那。
我是想提倡大家多动手练一下,而不是光出主意纸上谈兵。
放狗是能找到些信息,但是要解决具体的问题,狗就不一定找得到了
可以直接应用上去的东西。 或者你可能找到了你认为满意的方案,
但是放上去程序一跑没有用呢? 所以直到这个程序可以真的打开
10M 的文件,这个问题还没有真正解决。其他的都是说法而已。
我想提倡少说多做。怎麼样,程序我都给好了,实验一下很困难吗?
不试又如何知道呢? 期待给出干货的同学。
这样吧,第一个可以让这个程序跑的同学我给 10 个包子。

【在 g*****g 的大作中提到】
: ephemeral port range 要改,别的还真没记得有啥特别的。也没准 VM 本来就设好了
: 。你这个像是 file descriptor的问题,一狗应该能找到。

avatar
S*A
42
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62122
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
然后呢,如何改?

【在 j*a 的大作中提到】
: ulimit -a
avatar
j*a
43
open files是1024,stdin/stdout/stderr占了仨
我这里user只能上2000,root可以上1024*1024
再多估计得fork了

【在 S*A 的大作中提到】
: $ ulimit -a
: core file size (blocks, -c) 0
: data seg size (kbytes, -d) unlimited
: scheduling priority (-e) 0
: file size (blocks, -f) unlimited
: pending signals (-i) 62122
: max locked memory (kbytes, -l) 64
: max memory size (kbytes, -m) unlimited
: open files (-n) 1024
: pipe size (512 bytes, -p) 8

avatar
S*A
44

对。 关键就是如何改。
fork 没用。

【在 j*a 的大作中提到】
: open files是1024,stdin/stdout/stderr占了仨
: 我这里user只能上2000,root可以上1024*1024
: 再多估计得fork了

avatar
l*s
45
root can set limit up to 1M, but it still crashes/hangs because of the
resource limit.
avatar
b*s
46
嗯,我在186000这个数量左右时崩溃了
设置到了1024000
估计是/proc/sys/fs/file-max这个限制
在我机器上是191449
一试果然,但是没到运行完系统就崩了
马上看看日志是怎么回事

【在 l*********s 的大作中提到】
: root can set limit up to 1M, but it still crashes/hangs because of the
: resource limit.

avatar
b*s
47
应该和内存有关,我在vm里面跑的,这个vm的内存是2g
马上读一下源代码

【在 j*a 的大作中提到】
: open files是1024,stdin/stdout/stderr占了仨
: 我这里user只能上2000,root可以上1024*1024
: 再多估计得fork了

avatar
j*a
48
内存不够系统崩掉了,我的也是vm有1g内存。
当时还能ping得到,sshd没死22端口好的但是不work,journalctl显示很多进程被杀了
我猜是内存枯竭所以sshd也spawn不了了,但是kernel杀了我其它n多进程x/terminal
什么的却留着测试的a.out,这样不太应该啊
另外24g内存的机器上是这样的,10m一台机器并发不容易啊
cat /proc/sys/fs/file-max
2413198

【在 b*******s 的大作中提到】
: 应该和内存有关,我在vm里面跑的,这个vm的内存是2g
: 马上读一下源代码

avatar
b*s
49
449 /*
450 * One file with associated inode and dcache is very roughly 1K.
451 * Per default don't use more than 10% of our memory for files.
452 */
453
454 n = (mempages * (PAGE_SIZE / 1024)) / 10;
455 files_stat.max_files = n;
456 if (files_stat.max_files < NR_FILE)
457 files_stat.max_files = NR_FILE;
应该就这段代码是计算max_file的
2.6.32.61 kernel的代码
avatar
b*s
50
100G内存说不定能撑住

【在 j*a 的大作中提到】
: 内存不够系统崩掉了,我的也是vm有1g内存。
: 当时还能ping得到,sshd没死22端口好的但是不work,journalctl显示很多进程被杀了
: 我猜是内存枯竭所以sshd也spawn不了了,但是kernel杀了我其它n多进程x/terminal
: 什么的却留着测试的a.out,这样不太应该啊
: 另外24g内存的机器上是这样的,10m一台机器并发不容易啊
: cat /proc/sys/fs/file-max
: 2413198

avatar
j*a
51
kernel: Mem-Info:
kernel: [] system_call_fastpath+0x1a/0x1f
kernel: [] ? page_fault+0x28/0x30
kernel: [] SyS_socket+0x5c/0xa0
kernel: [] sock_alloc_file+0x52/0x130
kernel: [] d_alloc_pseudo+0xe/0x20
kernel: [] __d_alloc+0x25/0x180
kernel: [] ? tcp_v4_init_sock+0x12/0x30
kernel: [] kmem_cache_alloc+0x227/0x280
kernel: [] ? inet_csk_init_xmit_timers+0x6e/0xa0
kernel: [] ? tcp_delack_timer_handler+0x200/0x200
kernel: [] ? __d_alloc+0x25/0x180
kernel: [] __slab_alloc.isra.46+0x2f4/0x5ae
kernel: [] new_slab+0x2fc/0x310
kernel: [] alloc_pages_current+0xa9/0x160
kernel: [] __alloc_pages_nodemask+0xad9/0xaf0
kernel: [] out_of_memory+0x437/0x480
kernel: [] oom_kill_process+0x206/0x390
kernel: [] ? rcu_oom_notify+0xe4/0x100
kernel: [] ? put_online_cpus+0x56/0x80
kernel: [] dump_header+0x7f/0x200
kernel: [] dump_stack+0x54/0x8d
kernel: Call Trace:
kernel: ffff88003a2bfad8 ffffffff810f3464 0000000000000000 ffff88003e459b28
kernel: ffff88003a2bfb00 ffffffff814ec48e ffff88003a2bfa90 ffffffff81062d76
kernel: 0000000000000000 ffff88003a2bfa70 ffffffff814ee4fb ffff88002fd21160
kernel: Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox
12/01/2006

【在 b*******s 的大作中提到】
: 449 /*
: 450 * One file with associated inode and dcache is very roughly 1K.
: 451 * Per default don't use more than 10% of our memory for files.
: 452 */
: 453
: 454 n = (mempages * (PAGE_SIZE / 1024)) / 10;
: 455 files_stat.max_files = n;
: 456 if (files_stat.max_files < NR_FILE)
: 457 files_stat.max_files = NR_FILE;
: 应该就这段代码是计算max_file的

avatar
j*a
52
这还只是最基本的file-max解决了

【在 b*******s 的大作中提到】
: 100G内存说不定能撑住
avatar
b*s
53
应该就是这么回事了

【在 j*a 的大作中提到】
: kernel: Mem-Info:
: kernel: [] system_call_fastpath+0x1a/0x1f
: kernel: [] ? page_fault+0x28/0x30
: kernel: [] SyS_socket+0x5c/0xa0
: kernel: [] sock_alloc_file+0x52/0x130
: kernel: [] d_alloc_pseudo+0xe/0x20
: kernel: [] __d_alloc+0x25/0x180
: kernel: [] ? tcp_v4_init_sock+0x12/0x30
: kernel: [] kmem_cache_alloc+0x227/0x280
: kernel: [] ? inet_csk_init_xmit_timers+0x6e/0xa0

avatar
b*s
54
看来10M真的相当难搞,得换思路

【在 j*a 的大作中提到】
: 这还只是最基本的file-max解决了
avatar
b*s
55
和default的都是吻合的

【在 b*******s 的大作中提到】
: 449 /*
: 450 * One file with associated inode and dcache is very roughly 1K.
: 451 * Per default don't use more than 10% of our memory for files.
: 452 */
: 453
: 454 n = (mempages * (PAGE_SIZE / 1024)) / 10;
: 455 files_stat.max_files = n;
: 456 if (files_stat.max_files < NR_FILE)
: 457 files_stat.max_files = NR_FILE;
: 应该就这段代码是计算max_file的

avatar
j*a
56
最前面得用load balancer顶着?
换udp?
rawsocket?

【在 b*******s 的大作中提到】
: 看来10M真的相当难搞,得换思路
avatar
p*w
57
en, 估计你们机器也不行,看看人家卖19B的机器,24core 100GB ram, 2m
connections per server.

杀了
terminal

【在 b*******s 的大作中提到】
: 100G内存说不定能撑住
avatar
b*s
58
我们实验室里有两台12cores,64GB的

【在 p*****w 的大作中提到】
: en, 估计你们机器也不行,看看人家卖19B的机器,24core 100GB ram, 2m
: connections per server.
:
: 杀了
: terminal

avatar
b*e
59

看我原帖里贴的link:
http://blog.lifeibo.com/blog/2011/07/07/200-long-connection.htm
转:
3. 由于客户端与服务端需要建立大量的socket,所以我们需要调速一下最大文件描述
符。
客户端,需要创建六万多个socket,我设置最大为十万好了,的在/etc/security/
limits.conf中添加:
admin soft nofile 100000
admin hard nofile 100000
服务端,需要创建200万连接,那我想设置nofile为200万,好,问题来了。
当我设置nofile为200万时,系统直接无法登陆了。尝试几次,发现最大只能设置到100
万。在查过源码后,才知道,原来在2.6.25内核之前有个宏定义,定义了这个值的最大
值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/
sys/fs/nr_open来设置。于是我升级内核到2.6.32。ulimit详细介绍见博文:老生常谈
升级内核后,继续我们的调优,如下:
sudo bash -c 'echo 2000000 > /proc/sys/fs/nr_open'

【在 b*******s 的大作中提到】
: 和default的都是吻合的
avatar
b*e
60

run dmesg command, looks like oom killer ?

【在 j*a 的大作中提到】
: kernel: Mem-Info:
: kernel: [] system_call_fastpath+0x1a/0x1f
: kernel: [] ? page_fault+0x28/0x30
: kernel: [] SyS_socket+0x5c/0xa0
: kernel: [] sock_alloc_file+0x52/0x130
: kernel: [] d_alloc_pseudo+0xe/0x20
: kernel: [] __d_alloc+0x25/0x180
: kernel: [] ? tcp_v4_init_sock+0x12/0x30
: kernel: [] kmem_cache_alloc+0x227/0x280
: kernel: [] ? inet_csk_init_xmit_timers+0x6e/0xa0

avatar
S*A
61
说的对级啦。
这里有三个东西要调,
fs.file-max
fs.nr_open
ulimit
其中那个 nr_open 是不太容易 google 出来的。
一般没有实际去实验的话大概找到其中的一两个。
然后真正的内存限制是要实际实验一下才能知道
上限在神魔地方。这就是为神魔我鼓励大家去
动手实验一下,看看结果和你预计的是不是一样。
我 8G 的笔记本可以跑到 2M sockets 然后就 OOM
把 X 杀掉了。倒是没有死机。所以,类推的话 10M
sockets 需要 差不多 40G 才能跑。这个还仅仅是
file descriptor,没有 tcp 连接。
在这以前参与实验的都给发包子。

【在 b********e 的大作中提到】
:
: run dmesg command, looks like oom killer ?

avatar
S*A
62

这个是因为 OOM killer 是看程序使用内存的大小,就是用户 VMA 加起来
有多大。你的 a.out 用户空间的内存并不大,非常小,但是占用的核心
资源非常多。OOM killer 并不能看出 kernel 的内存是那个程序造成
的,像文件系统这些是共享的,没法数清,所以把大户 X 什么的给误
杀掉了。

【在 j*a 的大作中提到】
: 内存不够系统崩掉了,我的也是vm有1g内存。
: 当时还能ping得到,sshd没死22端口好的但是不work,journalctl显示很多进程被杀了
: 我猜是内存枯竭所以sshd也spawn不了了,但是kernel杀了我其它n多进程x/terminal
: 什么的却留着测试的a.out,这样不太应该啊
: 另外24g内存的机器上是这样的,10m一台机器并发不容易啊
: cat /proc/sys/fs/file-max
: 2413198

avatar
d*i
63
大赞强贴,请问具体是那个文件定义了那个宏?

【在 b********e 的大作中提到】
:
: run dmesg command, looks like oom killer ?

avatar
S*A
64
不重要,新的 kernel 都不用那个宏了,
使用 /proc/sys/fs/nr_open
BTW, 那个宏我没有记错的话就叫 NR_OPEN.

【在 d****i 的大作中提到】
: 大赞强贴,请问具体是那个文件定义了那个宏?
avatar
d*i
65
多谢!

【在 S*A 的大作中提到】
: 不重要,新的 kernel 都不用那个宏了,
: 使用 /proc/sys/fs/nr_open
: BTW, 那个宏我没有记错的话就叫 NR_OPEN.

avatar
q*c
66
好像要加某个系统 limit.

【在 S*A 的大作中提到】
: 我觉得大家讨论很热情,
: 我们来做点练习吧,不要光说不练。
: 下面这个程序是暴露一些写 C10M 可能碰到的问题,
: 看看大家有没有神魔解决方法。如果有,请贴程序或者
: 脚本,方便他人重复实验.
: 如果实在没有人贴答案,我也可以公布我自己的。
: #include
: #include
: #include
: #include

avatar
d*r
67
请问大牛你建议用哪个版本的 Linux kernel?
我刚刚在 AWS 跑了下你的程序,准备 follow 你的 "SSA(草民) C10M 系列" :)

【在 S*A 的大作中提到】
: 不重要,新的 kernel 都不用那个宏了,
: 使用 /proc/sys/fs/nr_open
: BTW, 那个宏我没有记错的话就叫 NR_OPEN.

avatar
h*c
68
从我个人角度讲用pc搞企业级的项目,不是很乐观
企业级的东西不需要多媒体,甚至不需要考虑兼容一堆垃圾硬件
简化简化再简化
你如果正规一点,就上个github,也搞个code review,unit test 什么的
咱们看看市场上的低端硬件能push到什么limit
avatar
S*A
69
大牛不感当,都说了是草民嘛,就是混口饭吃。
我用 Fedora 20。
你其实用任何 3 字头的 kernel 都可以。

【在 d*******r 的大作中提到】
: 请问大牛你建议用哪个版本的 Linux kernel?
: 我刚刚在 AWS 跑了下你的程序,准备 follow 你的 "SSA(草民) C10M 系列" :)

avatar
S*A
70
就现在这个参与度我怕是不能指望 code review 了。
企业级的很多也就是强壮点的 PC 而已。

【在 h**********c 的大作中提到】
: 从我个人角度讲用pc搞企业级的项目,不是很乐观
: 企业级的东西不需要多媒体,甚至不需要考虑兼容一堆垃圾硬件
: 简化简化再简化
: 你如果正规一点,就上个github,也搞个code review,unit test 什么的
: 咱们看看市场上的低端硬件能push到什么limit

avatar
h*c
71
参与度 concerns your leadership,
since you started this topic, you should start a github
I recently bought two PCs, can be used for test.
Code review or not, I can do test/doc.
Good committers should get community reference eg. linked etc.
企业级 at least less broken rate.
Some time h/w could make big problem.
e.g. a bad nic sent mal-formed frames, only half a year later it was
detected it is this problem.

【在 S*A 的大作中提到】
: 就现在这个参与度我怕是不能指望 code review 了。
: 企业级的很多也就是强壮点的 PC 而已。

avatar
d*r
72
我觉得只要真能折腾出能用的 package/lib, 肯定能火的,有机会的话我也参加一个
不能用之前,我觉得大家就看热闹了,
如果能demo能用了,代码base还小,逻辑简单,dependency 少易于安装,就可能火了。
现在 large concurrent connections, high-scalability 的 message server 这些东
西, 大家都很需要。

【在 S*A 的大作中提到】
: 就现在这个参与度我怕是不能指望 code review 了。
: 企业级的很多也就是强壮点的 PC 而已。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。