登录 |

编译PHP5.4内存不够

2013年08月14日 下午 26:22 | 作者:

VPS编译PHP5.4报错,make:*** [ext/fileinfo/libmagic/apprentice.lo] Error 1,编译这个fileinfo扩展至少要700M内存。
https://bugs.php.net/bug.php?id=48809

解决方案:

  1. 禁用fileinfo扩展
    –disable-fileinfo
  2. 添加swap分区
  1. 进入一个目录
    cd /var/
  2. 获取256M的文件块
    dd if=/dev/zero of=swapfile bs=1024 count=262144
  3. 创建swap文件
    mkswap swapfile
  4. 激活swap文件
    swapon swapfile
  5. 查看一下swap是否正确
    swapon -s
  6. 加到fstab文件中让系统引导时自动启动
    vi /etc/fstab
    /var/swapfile swap swap defaults 0 0

 

TCP连接数不够用?

2013年08月2日 下午 00:36 | 作者:

一个TCP连接四元组,唯一确定一条TCP连接,只要IP四元组不冲突,就能创建连接。
client_ip:client_port – server_ip:server_port

可以创建多少连接?

php-fpm(192.168.1.100) → memcached(127.0.0.1:11211)
↓
mysql(192.168.1.200:3306)
  1. php-fpm(127.0.0.1) → memcached(127.0.0.1)
    由于连接本地环回地址,故而client_id=server_ip=127.0.0.1,只有client端口号可以在[1~65535]之间动态变化,
    IP四元组可变范围:127.0.0.1:[1~65535] – 127.0.0.1:[11211]
    【连接相同IP的一个服务端口】能建立65535-1条连接,因为源地址和目地址不能相等!127.0.0.1:11211 → 127.0.0.1:11211。
  2. php-fpm(192.168.1.100) → memcached(192.168.2.100)
    由于mysql在网段192.168.1.0,故而使用同网段IP与之建立连接,
    IP四元组可变范围:192.168.1.100:[1~65535] – 192.168.1.200:[3306]
    【连接不同IP的一个服务端口】能建立65535条连接。

连接数受限于:

  1. 客户端:动态端口范围(默认32768-61000)
    net.ipv4.ip_local_port_range = 1024 65535
  2. 服务端/客户端:最大文件描述符
    1. /proc/sys/fs/nr_open(linux 2.6.25 默认1000000)
      echo 2000000 > /proc/sys/fs/nr_open
    2. /etc/security/limits.conf
      admin    soft    nofile  2000000
      admin    hard    nofile  2000000

参考:

  1. tcp的65535个连接之迷
  2. http长连接200万尝试及调优