golang协程资源占有率

GO版本:go version go1.4.2 linux/amd64

执行协程只需要极少的栈内存(大概是4~5KB),默认情况下,线程栈的大小为1MB。

Apache。
持续几秒的短期连接,比如快速事务,如果每秒处理1000个事务,只有约1000个并发连接到服务器。
事务延长到10秒,要维持每秒1000个事务,必须打开1万个并发连接。这种情况下:尽管你不顾DoS攻击,Apache也会性能陡降;同时大量的下载操作也会使Apache崩溃。
如果每秒处理的连接从5千增加到1万,你会怎么做?比方说,你升级硬件并且提高处理器速度到原来的2倍。发生了什么?你得到两倍的性能,但你没有得到两倍的处理规模。每秒处理的连接可能只达到了6000。你继续提高速度,情况也没有改善。甚至16倍的性能时,仍然不能处理1万个并发连接。所以说性能和可扩展性是不一样的。
问题在于Apache会创建一个CGI进程,然后关闭

?
1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost mpro] # more /proc/cpuinfo | grep "model name"
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
[root@localhost mpro]
[root@localhost mpro] # grep MemTotal /proc/meminfo
MemTotal:        3868776 kB
[root@localhost mpro] # getconf LONG_BIT
64
[root@localhost mpro] # more /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

测试用例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import (
     "time"
)
 
func main() {
     for  i := 0; i < 200000; i++ {
         go func() {
             time .Sleep(5 *  time .Second)
         }()
     }
 
     time .Sleep(10 *  time .Second)
}

执行程序前:

?
1
2
3
4
5
top  - 18:53:19 up 19 min,  3  users ,  load average: 0.00, 0.04, 0.11
Tasks: 522 total,   1 running, 521 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.6  id ,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3868776 total,  3327732  free ,   235764 used,   305280 buff /cache
KiB Swap:  2097148 total,  2097148  free ,        0 used.  3397344 avail Mem

执行程序后:

?
1
2
3
4
5
top  - 18:53:37 up 19 min,  3  users ,  load average: 0.00, 0.04, 0.11
Tasks: 524 total,   1 running, 523 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us, 10.6 sy,  0.0 ni, 88.2  id ,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3868776 total,  2793732  free ,   752512 used,   322532 buff /cache
KiB Swap:  2097148 total,  2097148  free ,        0 used.  2880016 avail Mem

总结:20万个协程占用了500M内存  50万KB

平均一个协程占用2.5KB

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值