建议的估计时间的方法是使用clock()函数,然后将cpu周期的计数除以周期/秒.
我的问题是我试图运行的程序需要花费很多时间(以小时为单位).这意味着clock()函数(返回long int)返回一个垃圾值(因为max long int对此不够大)
任何建议(除了估计内部循环的时间和添加它们之外)?
long t1 = clock();
function();
long t2=clock();
time = ((double)t2 - t1) / CLOCKS_PER_SEC
Run Code Online (Sandbox Code Playgroud) 我在Windows Server 2012下的SQL Server 2012中运行一些存储过程,这些存储过程位于具有32 GB RAM和8个CPU内核的专用服务器中.CPU使用率始终低于10%,RAM使用率为80%,因为SQL Server分配了20 GB(32 GB).
有些存储过程在某些日子和其他日子需要4小时,几乎相同的数据需要7或8小时.
我使用限制性最小的隔离级别,所以我认为这不应该是一个锁定问题.数据库大小约为100 GB,最大的表有大约500万条记录.
这些进程具有批量插入,更新和删除(在某些情况下,我可以使用truncate来避免生成日志并节省一些时间).我在一个表中进行了一些全文搜索查询.
我完全控制了服务器,所以我可以更改任何配置参数.
我有几个问题:
编辑:我检查了日志,我发现了这个:
2015年3月18日11:09:25,spid26s,未知,SQL Server遇到82次发生的I/O请求需要超过15秒才能完成文件[C:\ Program Files\Microsoft SQL Server\MSSQL11数据库[tempdb](2)中的.HLSQLSERVER\MSSQL\DATA\templog.ldf].OS文件句柄为0x0000000000000BF8.最新的长I/O的偏移量为:0x00000001fe4000
sql-server server-configuration long-running-processes database-performance sql-server-2012
我正在使用 Azure Durable Functions .Net Core。
[FunctionName("Calculate")]
public async Task RunOrchestrator(
[OrchestrationTrigger] IDurableOrchestrationContext context, ILogger log)
{
await context.CallActivityAsync<object>(FuncConstants.Cal1, null);
await context.CallActivityAsync<object>(FuncConstants.Cal2, null);
await context.CallActivityAsync<object>(FuncConstants.Cal3, null);
await context.CallActivityAsync<object>(FuncConstants.Cal4, null);
await context.CallActivityAsync<object>(FuncConstants.Cal5, null);
await context.CallActivityAsync<object>(FuncConstants.Cal6, null);
await context.CallActivityAsync<object>(FuncConstants.Cal7, null);
await context.CallActivityAsync<object>(FuncConstants.Cal8, null);
await context.CallActivityAsync<object>(FuncConstants.Cal9, null);
}
[FunctionName("Starter_Calculation")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
[DurableClient] IDurableOrchestrationClient starter,
ILogger log)
{
string instanceId = await starter.StartNewAsync("Calculate", null);
return starter.CreateCheckStatusResponse(req, instanceId);
}
Run Code Online (Sandbox Code Playgroud)
这里,每个函数需要超过 5-6 个小时来执行一些逻辑计算(算术运算),因为它们处理超过 27-3000 万条数据库记录。
我收到第一个函数本身的错误为 "Timeout value …
timeoutexception long-running-processes azure-durable-functions
我正在运行许多程序(都是用fortran编写的).现在我正在运行一个程序,(./first)但我希望一旦完成另一个程序开始运行(./second),一旦其他程序完成,下一个程序开始(./third),依此类推.知道如何从终端做到这一点?谢谢!
我想要实现以下目标:
一个简单的用例是:用于审阅文档并批准或拒绝文档的工作流程.将为此创建工作流程,将通知个人,并且只要他们想要,他们就可以通过批准或拒绝审核来提供他们的反馈.
我以Andrew Zhu的代码为例,可以在http://xhinker.com/post/WF4.aspx上找到.
我遇到的问题是:
WaitForRunnableInstance无限期等待,因此我从未收到通知我的工作流程已启动并持久保存到数据库;BlockingBookmarks设置为我的自定义活动的id,ExecutionStatus设置为Idle,IsInitialized设置为1,IsSuspended设置为0,IsCompleted设置为0并IsReadyToRun设置为0.我已经开始讨论微软论坛,可以在http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/6262874d-3493-4be1-bd05-b990307e1875/上看到并得到一些反馈,但有些事情仍然不对.
有什么想法吗?使用自定义活动的长时间运行工作流的任何有用模式?
谢谢!
我有一个 ASP.NET 网站,其中包含许多长时间运行(5 分钟到 2 小时)的用户启动的任务。我希望每个用户都能够看到自己作业的进度,并且能够关闭浏览器并稍后返回。
当前的计划是在每个作业启动时将其存储在数据库中,并将消息发布到 RabbitMQ 队列,Windows 服务将接收该消息并开始处理该作业。
但是,我不确定将进度信息从服务传递回网络服务器的最佳方法?我看到两个选择:
我倾向于第二种选择,因为我真的不想通过定期轮询/写入进度信息来增加数据库的更多开销。然而,有很多关于使用 RabbitMQ(作为消费者)的警告- 因为我没有发送重要消息(如果进度消息没有被处理也没关系),我想知道这是否重要?这并不是说困难(著名的遗言)。
这个选项听起来合理吗?还有更好的选择吗?
architecture asp.net windows-services rabbitmq long-running-processes
php.exe可以连续运行数周或数月的应用程序运行,而不会崩溃吗?
例如:UDP或HTTP/TCP服务器(或网络)应用程序.我听说它还没有为长时间运行的应用程序开发.我相信我们可以在linux和Windows中使用pthreads/events来进行多线程/并行,以支持为进程生成的负载并开发长时间运行的应用程序.但不确定会有多稳定.任何能够使用pthreads和长期运行的PHP应用程序发表评论并提供开发资源指导的人?
.net ×1
.net-4.0 ×1
architecture ×1
asp.net ×1
c++ ×1
events ×1
linux ×1
networking ×1
performance ×1
php ×1
pthreads ×1
rabbitmq ×1
sql-server ×1
terminal ×1