.NET Core/Angular部署IIS后JSON文件读写缓慢问题排查
解决.NET Core/Angular项目IIS部署后JSON文件读写缓慢问题
一、IIS部署核心注意事项
- 权限配置:确保.NET Core应用池的运行身份(默认
ApplicationPoolIdentity或自定义账户)对目标文件目录(如D:\LOG)拥有完整的读写权限。权限不足会导致IO操作阻塞,表现为耗时异常增加。 - 托管环境要求:必须在IIS服务器上安装.NET Core Hosting Bundle,确保.NET Core运行时与IIS托管模块兼容,避免隐性性能问题。
- 应用程序池设置:将应用程序池的
.NET CLR版本设为无托管代码,因为.NET Core依赖自身跨平台运行时,无需传统CLR支持,避免兼容性冲突。 - 静态文件托管:Angular静态资源(JS、CSS、HTML等)建议直接通过IIS托管对应目录,或在.NET Core中正确配置静态文件中间件,避免后端进程处理静态请求占用资源。
- 日志追踪:开启IIS失败请求跟踪(FRT)和.NET Core日志记录,便于定位IO操作或其他环节的性能瓶颈。
二、JSON文件读写缓慢的具体解决方案
1. 优化文件路径与系统限制
- 避免使用系统根目录下的文件夹存储业务文件,建议将JSON文件放在项目私有目录(如
Data子目录),通过IWebHostEnvironment获取路径,减少系统级IO限制:// 注入IWebHostEnvironment private readonly IWebHostEnvironment _env; public YourService(IWebHostEnvironment env) => _env = env; // 获取安全的文件路径 string filePath = Path.Combine(_env.ContentRootPath, "Data", "avail.json"); - 检查目标目录是否被杀毒软件(如Windows Defender)的实时保护扫描,将该目录加入杀毒软件排除列表,避免扫描拦截IO操作。
2. 优化IO操作代码
- 替换同步IO方法为异步方法,避免阻塞ASP.NET Core线程池线程,提升并发场景下的性能:
// 异步写入 await File.WriteAllTextAsync(filePath, result); // 异步读取 string data = await File.ReadAllTextAsync(filePath); - 若文件体积较大,使用
FileStream进行分块读写,减少内存占用与IO阻塞时间:// 分块读取示例 using var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); using var reader = new StreamReader(stream); string data = await reader.ReadToEndAsync();
3. 缓存与IIS性能调优
- 对不频繁更新的JSON数据使用内存缓存,减少重复IO操作:
private readonly IMemoryCache _cache; public YourService(IMemoryCache cache) => _cache = cache; public async Task<string> GetCachedJsonData() { const string cacheKey = "AvailJsonCache"; if (!_cache.TryGetValue(cacheKey, out string cachedData)) { string filePath = Path.Combine(_env.ContentRootPath, "Data", "avail.json"); cachedData = await File.ReadAllTextAsync(filePath); // 根据数据更新频率设置缓存过期时间 _cache.Set(cacheKey, cachedData, TimeSpan.FromMinutes(5)); } return cachedData; } - 调整应用程序池的队列长度与最大工作进程数,根据服务器硬件配置合理设置,避免请求排队导致IO等待。
4. 系统磁盘优化
- 使用资源监视器检查服务器磁盘IO使用率,若磁盘占用接近100%,排查是否有其他进程占用磁盘资源,或更换SSD等高性能存储设备。
- 关闭Windows索引服务对目标文件目录的索引,避免后台扫描增加IO开销。
内容的提问来源于stack exchange,提问作者wiki
相关产品推荐
相关产品推荐

