在Linux系统上运行ASP服务器(通常通过Mono或.NET Core实现)时,有效的内存管理至关重要。以下是一些关键的内存管理策略:
工具推荐:
- top
/htop
- 实时查看内存使用情况
- free -m
- 查看系统内存总量和使用情况
- vmstat
- 监控虚拟内存统计
- glances
- 综合监控工具
# 示例:查看内存使用情况
free -h
Mono配置:调整Mono运行时内存参数
export MONO_GC_PARAMS="soft-heap-limit=512m,nursery-size=64m"
.NET Core配置:在appsettings.json中配置垃圾回收
{
"System.GC.Server": true,
"System.GC.HeapHardLimit": "0x20000000"
}
# 查看当前值(0-100)
cat /proc/sys/vm/swappiness
# 临时设置为较低值(推荐10-30)
sudo sysctl vm.swappiness=20
# 永久设置
echo "vm.swappiness=20" | sudo tee -a /etc/sysctl.conf
# 查看当前OOM killer设置
cat /proc/sys/vm/overcommit_memory
# 推荐设置为1
sudo sysctl vm.overcommit_memory=1
# 限制容器内存使用
docker run -it --memory="512m" --memory-swap="1g" your-asp-app
垃圾回收调优:
- 对于Mono: MONO_GC_PARAMS="major=marksweep"
- 对于.NET Core: COMPlus_GCHeapCount=2
(设置GC线程数)
内存限制:
# 限制进程内存(使用cgroups)
systemd-run --scope -p MemoryLimit=500M mono your-asp-app.exe
通过以上方法的组合应用,可以有效管理Linux环境下ASP服务器的内存使用,提高应用稳定性和性能。