启动应用程序缓慢

时间:2017-02-01 17:10:07

标签: c# .net amazon-web-services amazon-ec2 .net-4.5

我需要你的帮助。

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

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

确实,我使用"任务调度程序"在启动时启动应用程序。

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

  • 当我手动启动应用程序时:任务(应用程序的所有内容) 有todo)在不到40个 secondes
  • 完成。
  • 当我在启动时使用任务计划程序启动应用程序时:执行任务 超过5 分钟!去完成。 (多么冷酷的开始!)

  • 我推迟了应用的启动(使用/ timout .bat) (90secondes)> app仍然极其缓慢......

  • 我延迟了我的应用程序的启动(使用/ timout .bat)(300 secondes),绝对确定所有的.net框架都是完整的 加载> 正常工作!

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

您如何看待我的案子?你觉得我对.net framworks预加载是对的吗?是否可以加快加载速度?

我知道ngen.exe,我在.exe和dll上试过了。但问题仍然存在。我认为问题更具全球性,而不是我的应用程序特有的。

供您参考:

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

  • EC2InstanceMetadata
  • AmazonS3Client
  • GetObjectRequest
  • GetObjectResponse

凭据存储在app.config

所有这一课都被召唤一次。 (如果出现故障,则不进行重试循环)。我的意思是,如果没有互联网应用程序崩溃或返回异常。 该应用程序在VS 2015中制作,AWSSDK dll位于.exe

的根文件夹中

谢谢你的帮助!

----------------------------编辑------------------

我用一个简单的干净控制台(Visual Studio 2015模板)代码做了一个简单的测试(在C :)上写了100个txt文件。 我在启动时使用任务调度程序运行程序,它需要5分钟来完成这个巨大的任务....所以似乎问题不是我的代码。

编辑:我还尝试了使用" .net framework 3.5 client"的简单测试应用程序。同样的事情......应用程序挂了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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

好的......,我发现了问题和答案!

问题在于&#34;任务调度程序&#34;启动应用程序,默认设置优先级为&#34;低于正常值&#34; .... 显然,我的应用程序速度较慢,因为许多高优先级进程在启动时启动...

无法直接在任务模式中更改优先级。必须通过以XML格式导出任务,修改它并重新导入它来完成它。

Original post here!

谢谢你。