[英]Startup Application slow
我需要你的帮助。
我使用C# net.4.5 ans AWSSDK V3.3制作了一个控制台应用程序,以在启动时配置我的实例。
我的问题是,在我的实例(windows server 2008r2)第一次启动时,应用程序启动非常缓慢并且运行非常缓慢。
事实上,我使用“任务调度程序”在启动时启动应用程序。
当我重新启动实例或重新启动(甚至重新启动)应用程序时,一切正常。
当我在启动时使用任务调度程序启动应用程序时:任务耗时超过 5分钟! 去完成。 (多么冷的开始!)
我延迟了我的应用程序的启动(使用 /timout .bat)(90 秒)>应用程序仍然非常慢......
所以,现在我必须使用这个启动应用程序运行数百个现场实例......如果我在每个实例的启动时浪费 5 分钟,我将损失一大笔钱!
你怎么看我的案子? 你认为我对 .net 框架预加载是正确的吗? 有没有可能让它加载得更快?
我知道 ngen.exe,我在 .exe 和 dll 上尝试过。 但问题还是一样。 我认为这个问题更具全球性,而不是特定于我的应用程序。
供您参考:
在我的应用程序中从我使用的 SDK:
凭据存储在 app.config 中
所有这个类都被调用一次。 (如果失败,则没有重试循环)。 我的意思是,如果没有互联网,应用程序会崩溃或返回异常。 该应用程序是在 VS 2015 中制作的,AWSSDK dll 位于 .exe 的根文件夹中
谢谢你,谢谢你的帮助!
- - - - - - - - - - - - - - 编辑 - - - - - - - - -
我用一个简单的干净控制台(Visual Studio 2015 模板)代码(在 C: 上编写 100 个 txt 文件)做了一个简单的测试。 我在启动时使用 Task scheduler 运行程序,完成这个巨大的任务需要 5 分钟......所以问题似乎不是我的代码。
编辑:我还尝试了带有“.net framework 3.5 客户端”的简单测试应用程序。 同样的事情...应用程序挂起 4 分钟,然后完成工作。 (共 6 分钟)。
@MaLiN2223 可能正在制作服务而不是控制台应用程序是一种解决方案......我应该尝试。 我的启动应用程序做什么:
在亚马逊 S3 上下载文件
从 aws-sdk 获取实例信息
启动或停止服务
更改 .ini 中的值
挂载网络驱动器
读取xml值
启动应用程序
供您参考,测试代码:
using System;
using System.IO;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 100; i++)
{
Console.Write("Writting file nb: " + i.ToString());
File.Create(@"C:\test_" + i.ToString() + ".txt");
}
log();
Console.ReadKey();
}
static void log()
{
using (StreamWriter writer = new StreamWriter("C:\\test_log.txt"))
{
var uptime02 = new PerformanceCounter("System", "System Up Time");
uptime02.NextValue(); //Call this an extra time before reading its value
var timeTowrite = TimeSpan.FromSeconds(uptime02.NextValue());
writer.WriteLine(timeTowrite);
}
}
}
}
好的...,我找到了问题和答案!
问题是“任务调度程序”以默认设置为“低于正常”的优先级启动应用程序......显然,我的应用程序速度较慢,因为在启动时启动了许多高优先级进程......
无法直接在任务调度中更改优先级。 必须通过以 XML 格式导出任务、修改并重新导入来完成。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.