今天在VPS上用pip安装gevent,结果遇到报错:
virtual memory exhausted: Cannot allocate memory
上网查了一下,有的人说看 ulimit -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) 7899 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) 7899 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
里面的max memory size和virtual memory设置成比VPS的内存小就行了,分别用 ulimit -m 60000 和 ulimit -v 60000设置成功了,但问题依旧。
显然给VPS加内在的方法太麻烦了,得重做系统。接着又在网上找到了用swap扩展内存的方法,具体做法是建一个大文件做swap用。
先建一个3G大的文件
# dd if=/dev/zero of=/var/swap bs=1M count=3072 3072+0 records in 3072+0 records out 3221225472 bytes (3.2 GB) copied, 16.7703 s, 192 MB/s
使用 mkswap 将 /var/swap 这个文件格式化为 swap 的文件格式:
# mkswap /var/swap Setting up swapspace version 1, size = 3145724 KiB no label, UUID=138195eb-1d16-4b06-b6ad-b5b26fc71622
使用swapon来将 /var/swap 启动
# swapon swap
这样就OK了,看一下新的内存情况
# free total used free shared buffers cached Mem: 1019048 952148 66900 0 5172 100576 -/+ buffers/cache: 846400 172648 Swap: 3145724 0 3145724
用完之后再关掉swap
# swapoff swap # free total used free shared buffers cached Mem: 1019048 947136 71912 0 6840 91816 -/+ buffers/cache: 848480 170568 Swap: 0 0 0
之后的大文件也可以删除掉了。