由于虚拟机配置的限制,在运行nfsteam程序的时候,遭遇到内存和硬盘的空间不足。考虑到实际情况的并发量更加庞大,因此对代码和组织结构进行调优,调优方式在此列出。

1. 扩充硬盘

1.1 增加额外的硬盘并挂载

1
2
3
4
5
sudo fdisk -l    查看当前硬盘窗台
sudo fdisk /dev/sda2 为新硬盘分区
sudo mkfs -t ext4 /dev/sda2 格式化分区
sudo mount /dev/sda2 /root/data 挂载分区
df -hl 查看信息

Ubuntu 挂载新硬盘

1.2 虚拟机设置共享文件夹

1
2
sudo vmware-config-tools.pl -d
在mnt/hgfs路径下可以看到共享文件夹

2. 内存不足问题

2.1 使用redis数据库缓存数据

源码安装

参数调整

1
2
3
4
5
6
7
8
9
daemonize yes    # 生产环境中可设置为yes
pidfile /var/run/redis.pid # 当以守护进程方式运行的时候,Redis会把进程ID默认写到 /var/run/redis.pid
databases 2 # 逻辑库数量为2
dir /root/data # RDB文件路径重新设置
save "" # 设置RDB文件同步的频率,关闭AOF
maxmemory 6GB # 占用内存大小(服务器70%)
appendonly no # AOF关闭
stop-writes-on-bgsave-error no
maxmemoty-policy allkeys-lru # 对所有key执行LRU算法进行删除

一文了解 Redis 内存监控和内存消耗

2.2 python代码缓存池和过期时间

1
2
3
4
5
6
7
8
9
10
11
12
13
import redis

pool = redis.ConnectionPool( # 连接池
host="localhost",
port=6379,
db=0,
max_connections=8000 # 最大连接数
)

r = redis.Redis(connection_pool=pool)
r.flushdb() # 清空redis库

r.expire(str(flow._C)[-9,-1], 1200) # 设置key过期时间

2.3 设置内存交换区

添加SWAP 交换分区

3.网络问题

1
2
3
4
5
6
sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start

sudo vim /etc/NetworkManager/NetworkManager.conf // 将文件里面唯一的false改成true
sudo service network-manager restart

感谢观看,如有不足或错误,恳请大佬指正 (^_^)#