在Ubuntu上,可以打开的最大套接字数似乎受以下因素控制:
$ cat /proc/sys/net/ipv4/tcp_max_orphans
262144
Run Code Online (Sandbox Code Playgroud)
根据Rick Reed(来自WhatsApp)的一个演讲,这些人使用FreeBSD和ErLang在一台"单一服务器"上进行了200万次并发连接.我的理解是我们总是需要内核的一些支持.是的,看起来像FreeBSD调整了这个功能:
hw.machine: amd64
hw.model: Intel(R) Xeon(R) CPU X5675 @ 3.07GHz
hw.ncpu: 24
hw.physmem: 103062118400
hw.usermem: 100556451840
kb@c123$ uname -rps
FreeBSD 8.2-STABLE amd64
jkb@c123$ cat /boot/loader.conf.local
kern.ipc.maxsockets=2400000
kern.maxfiles=3000000
kern.maxfilesperproc=2700000
Run Code Online (Sandbox Code Playgroud)
所以,看起来像内核可以调整以支持这么多的物理连接,假设我们有足够的内存,对吗?如果是,那么它看起来很简单,那么它的炒作是什么?或者我错过了什么?
谢谢.
我很久以前就在VxWorks 5.5上工作,这是在世界上最好的实时操作系统上工作的最佳体验.从那时起,我再也没有机会继续努力.但是,一个问题不断涌现,让我如此快速和确定性?
我无法通过Google找到这个问题的很多参考资料.
所以,我只是想到了什么使常规操作系统不确定:
内存分配/解除分配: - Wiki说RTOS使用固定大小的块,因此这些块可以直接编入索引,但这会导致内部碎片,我相信这对于内存是关键任务系统来说根本不可取.已经有限了.
分页/分段: - 它与点1的链接
中断处理: - 不确定VxWorks如何实现它,因为这是VxWorks非常好的处理
上下文切换: - 我相信VxWorks 5.5用于在内核地址空间中执行的所有进程,因此上下文切换过去只涉及保存寄存器值而不涉及PCB(进程控制块),但我仍然不是100%肯定
进程调度算法: - 如果Windows实现抢占式调度(优先级/循环),那么处理调度的速度和VxWorks一样快吗?我不这么认为.那么,VxWorks如何处理调度?
请在需要时纠正我的理解.
有没有办法在gdb中输出print命令的输出?在我的情况下,我正在使用gdb调试核心转储,我正在调试的对象包含很多元素.我发现很难找到匹配的属性,即:
(gdb) print *this | grep <attribute>
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试将分块编码的数据发布到 httpbin.org/post。我尝试了两个选项:Requests 和 httplib
#!/usr/bin/env python
import requests
def gen():
l = range(130)
for i in l:
yield '%d' % i
if __name__ == "__main__":
url = 'http://httpbin.org/post'
headers = {
'Transfer-encoding':'chunked',
'Cache-Control': 'no-cache',
'Connection': 'Keep-Alive',
#'User-Agent': 'ExpressionEncoder'
}
r = requests.post(url, headers = headers, data = gen())
print r
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env python
import httplib
import os.path
if __name__ == "__main__":
conn = httplib.HTTPConnection('httpbin.org')
conn.connect()
conn.putrequest('POST', '/post')
conn.putheader('Transfer-Encoding', 'chunked')
conn.putheader('Connection', 'Keep-Alive')
conn.putheader('Cache-Control', 'no-cache')
conn.endheaders()
for i in range(130): …Run Code Online (Sandbox Code Playgroud) 我编写了一个程序,可以处理大量数据.我的CPU和操作系统(Ubuntu)都是64位,我有4GB的RAM.使用"top"(%Mem字段),我看到进程的内存消耗上升到大约87%,即3.4+ GB然后它被杀死了.
然后,我使用"uname -m"检查进程可以访问多少内存,这是"无限制".
现在,由于操作系统和CPU都是64位并且还存在交换分区,操作系统应该使用虚拟内存,即总共[> 3.4GB + yGB来自交换空间],并且只有当进程需要更多内存时才会使用它应该被杀了.
所以,我有以下问题:
请建议.
我在虚拟机上运行此命令时出现以下错误:
$ sudo pip install -U -v --no-deps -b /tmp/piyush/ /tmp/piyush/common_bundle
File "/usr/local/lib/python2.7/dist-packages/pip-6.0.6-py2.7.egg/pip/_vendor/pkg_resources/__init__.py", line 2807, in parse_requirements
raise ValueError("Missing distribution spec", line)
ValueError: ('Missing distribution spec', '/tmp/piyush/common_bundle')
Run Code Online (Sandbox Code Playgroud)
我的输入文件是存档.
$ file common_bundle
common_bundle: Zip archive data, at least v2.0 to extract
Run Code Online (Sandbox Code Playgroud)
pip的版本是:
$ pip -V
pip 6.0.6 from /usr/local/lib/python2.7/dist-packages/pip-6.0.6-py2.7.egg (python 2.7)
Run Code Online (Sandbox Code Playgroud)
这是common_bundle中的pip清单:
# This is a pip bundle file, that contains many source packages
# that can be installed as a group. You can install this like:
# pip this_file.zip
# …Run Code Online (Sandbox Code Playgroud) 我必须使用Snappy压缩地图o/p和map-reduce o/p.此外,这应该是可分割的.
当我在网上学习时,为了让Snappy写出可拆分的o/p,我们必须以类似Container的形式使用它.
你能建议怎么做吗?我尝试在网上找到一些例子,但不能很好.我正在使用Hadoop v0.20.203.
谢谢.PIYUSH
我正在做以下操作来从reducer压缩o/p文件:
OutputStream out = ipFs.create( new Path( opDir + "/" + fileName ) );
CompressionCodec codec = new GzipCodec();
OutputStream cs = codec.createOutputStream( out );
BufferedWriter cout = new BufferedWriter( new OutputStreamWriter( cs ) );
cout.write( ... )
Run Code Online (Sandbox Code Playgroud)
但是在第3行得到了空指针异常:
java.lang.NullPointerException
at org.apache.hadoop.io.compress.zlib.ZlibFactory.isNativeZlibLoaded(ZlibFactory.java:63)
at org.apache.hadoop.io.compress.GzipCodec.createOutputStream(GzipCodec.java:92)
at myFile$myReduce.reduce(myFile.java:354)
Run Code Online (Sandbox Code Playgroud)
我也跟着JIRA一样.
你能否建议我做错了什么?
我是Python的新手.我只是想知道是否可以在O(1)时间内找到列表或元组的长度.(len()是O(n))
在C中,我可以实现如下类似的事情:
int a[] = {1, 2, 3, 4 ,5};
printf("Length of Array a is :: %d\n", sizeof(a)/sizeof(a[0]));
Run Code Online (Sandbox Code Playgroud)
我知道上面的概念适用于地址,这就是为什么它可以在C中,而根据我的理解,Python不处理地址.但是,为了好奇,我仍然想问这个问题.