繁体   English   中英

启动应用程序慢

[英]Startup Application slow

我需要你的帮助。

我使用C# net.4.5 ans AWSSDK V3.3制作了一个控制台应用程序,以在启动时配置我的实例。

我的问题是,在我的实例(windows server 2008r2)第一次启动时,应用程序启动非常缓慢并且运行非常缓慢。

事实上,我使用“任务调度程序”在启动时启动应用程序。

当我重新启动实例或重新启动(甚至重新启动)应用程序时,一切正常。

  • 当我手动启动应用程序时:任务(应用程序必须完成的所有事情)在不到 40秒内完成
  • 当我在启动时使用任务调度程序启动应用程序时:任务耗时超过 5分钟 去完成。 (多么冷的开始!)

  • 我延迟了我的应用程序的启动(使用 /timout .bat)(90 秒)>应用程序仍然非常慢......

  • 我已经延迟了我的应用程序的启动(使用 /timout .bat)(300 秒),以绝对确保所有 .net 框架都已完全加载 > 一切正常!

所以,现在我必须使用这个启动应用程序运行数百个现场实例......如果我在每个实例的启动时浪费 5 分钟,我将损失一大笔钱!

你怎么看我的案子? 你认为我对 .net 框架预加载是正确的吗? 有没有可能让它加载得更快?

我知道 ngen.exe,我在 .exe 和 dll 上尝试过。 但问题还是一样。 我认为这个问题更具全球性,而不是特定于我的应用程序。

供您参考:

在我的应用程序中从我使用的 SDK:

  • EC2 实例元数据
  • 亚马逊S3客户端
  • 获取对象请求
  • 获取对象响应

凭据存储在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM