golang协程资源占有率
来源:互联网 发布:什么是java框架 编辑:程序博客网 时间:2024/06/07 09:59
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 0
- golang协程资源占有率
- Golang资源
- golang精华资源
- golang精华资源
- Golang语言学习资源
- 9. Golang 资源
- GoLang之协程
- GoLang之协程
- Golang协程调度
- Golang学习 - 学习资源列表
- 说一说golang的协程
- golang限制协程数量
- CPU占有率
- cpu50%占有率
- 手机市场占有率
- golang实现http静态资源服务器
- Golang goroutine协程(二) 并发资源竞争
- Golang协程与通道整理
- [三进制倍增 || 可并堆] BZOJ 4003 [JLOI2015]城池攻占
- Java的对象是采用值传递还是引用传递?
- SqlServer数据库同步 两张表的数据 去除重复数据
- Java重载(OverLoad)的理解
- php file_put_contents() 读取数据不换行问题
- golang协程资源占有率
- win快捷键大全
- HDOJ(HDU) 2091 空心三角形
- 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
- 详解HttpURLConnection
- 高精
- [LCT 线段树 dfs序] BZOJ 3779 重组病毒
- Java基础 - 欧几里得法求最大公约数
- JAVA-反射-GETGENERICSUPERCLASS()介绍