前言

前端时间刚开始接触Hangfire就翻译了一篇官方的教程[翻译+山寨]Hangfire Highlighter Tutorial,后来在工作中需要实现一个异步和定时执行的任务管理平台,就结合bootstrap ace模板和hangfire实现了一下。效果图如下:

遇到的坑

1.Hangfire的任务持久化很耗性能

生产环境部署时数据库Hangfire相关表已经手动创建好,可能忽略了哪些东西,站点运行时还是要创建,因为DBA给的权限没有Create所以报错了。最好的方案是给个大点的权限让Hangfire自己去创建管理表。

由于权限不够所以想改用(localdb)\v11 存取任务持久化数据,接着问题又来了,怎么运行localdb?这里有个方案LocalDB在IIS上如何成功配置,需要权限,果断放弃。实在不行就把任务数据持久化到内存吧,顺利上线了。少量测试时没发现问题,当我创建了68W个任务时,发现内存占用了2.6G,cpu也一直在80%以上。本来以为这么大内存是我的Job导致的,首先想到如果IIS重启了任务信息不能继续是个大问题,所以不得不找运维商量一下把这个任务相关表创建到另外一个我们自己管理的数据库上(另外一台机器)。等配置好数据库连接重新添加68W个任务时发现,应用服务器的内存才300多M,任务存储数据库的物理文件有2G多,数据库的cpu占用也上升了不少。这才意识到Hangfire的任务持久化是很耗性能的,同时也庆幸没有和应用数据放在一个数据库中。

2.Hangfire Dashboard 远程访问

默认情况下Hangfire 只允许本机访问Dashboard ,所以部署在服务器上之后就不能像本地一样实时查看任务状态了。解决方案 关于 hangfire 的权限问题

3.修改Hangfire的重试次数和并发个数

     //设置Hangfire执行Job失败后的尝试次数,默认值是10
GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute(){Attempts = }); //设置Hangfire并发处理Job的个数,默认值是 cpu个数*5
var options = new BackgroundJobServerOptions {WorkerCount = };
app.UseHangfireServer(options);

4.如何删除未执行的任务

还没找到方法

5.定时任务只支持到分钟,不能按秒控制。(它的精度没有那么高,所以需要秒级别的还是采用其它框架吧) 每10分钟执行一次的表达式: 0/10 * * * *

Hangfire的牛逼功能

0.远程查看任务执行状态

1.代码异常直接可以从Dashboard面板中查看堆栈

2.任务可以有返回值,在Dashboard的面板中也可以看到

3.hangfire支持多个server,还没研究怎么用,以后用到再补充

应用案例

1.重庆时时彩和新疆时时彩的开奖数据采集

有用的链接:

使用 Hangfire 如何知道那個 Job 執行了多久呢

使用 Hangfire 來處理非同步的工作

关于 hangfire 的权限问题

hangfire+bootstrap ace 模板实现后台任务管理平台的更多相关文章

  1. JS组件系列——基于Bootstrap Ace模板的菜单Tab页效果优化

    前言:之前发表过一篇  JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有) ,收到很多园友的反馈,当然也包括很多诟病,因为上篇只是将功能实现了,很多细节都没有处理 ...

  2. 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单

    这几天研究了基于bootstrap Ace模板+bootstra.addtabs.js实现菜单的效果 参考了这个人的博客 https://www.cnblogs.com/landeanfen/p/76 ...

  3. JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有)

    前言:最近园子里多了许多谈语言.谈环境.谈逼格(格局)的文章,看看笑笑过后,殊不知其实都是然并卵.提升自己的技术才是王道.之前博主分享过多篇bootstrap组件的文章,引起了很多园友的关注和支持,看 ...

  4. JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果

    Ace模板地址:http://code.google.com/p/ace-engine/wiki/AceTemplate(有时会打不开) Ace英文官网:http://wrapbootstrap.co ...

  5. 值得分享的Bootstrap Ace模板实现菜单和Tab页效果(转)

    Ace模板地址:http://code.google.com/p/ace-engine/wiki/AceTemplate(有时会打不开) Ace英文官网:http://wrapbootstrap.co ...

  6. 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)

    后台管理模板开始用frameset布局,但是有时候会遮挡比如上面导航或者左边导航的二级三级弹出菜单,因为宽度被限制了,所以有时候就用easyui或者ext的,但是样式不好看,然后看到了bootstra ...

  7. Bootstrap的响应式后台管理模板推荐

    1.Admin LTE 该模版开源免费.已用到项目中,客户评价说UI很好看... AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3的框架.高度可定制的,易于使用.支持很多的屏幕 ...

  8. Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板

    Metronic 是一套精美的响应式后台管理模板,基于强大的 Twitter Bootstrap 框架实现.Metronic 拥有简洁优雅的 Metro UI 风格界面,6 种颜色可选,76 个模板页 ...

  9. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

随机推荐

  1. Web语义化

    在昨天和做SEO的同学聊了一会儿,当然我没有学会搜索引擎优化的技巧和知识,但在此之前一直对HTML5中header.footer.sidebar.article等标签嗤之以鼻,觉得这个和div没有什么 ...

  2. 第二章 深入 C# 数据类型

    第二章 深入 C# 数据类型 1.封装又称信息隐藏,是指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系. ...

  3. NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...

  4. ios 下创建,删除文件夹的方法

    NSString *imageDir = [NSString stringWithFormat:@"%@/Caches/%@", NSHomeDirectory(), dirNam ...

  5. Java-继承,多态练习09-22-01

    1.实现如下类之间的继承关系,并编写Music类来测试这些类. 父类: package com.lianxi; public class Instrument { //属性 private Strin ...

  6. NodeJS系列~第一个小例子,实现了request.querystring功能

    返回目录 百度百科上: Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始,在Node中,Http是首要的.Node为创建http服务器作了优化,所以在网上 ...

  7. Android开发学习之路-抢红包助手开发全攻略

    背景:新年之际,微信微博支付宝红包是到处飞,但是,自己的手速总是比别人慢一点最后导致红包没抢到,红包助手就应运而生. 需求:收到红包的时候进行提醒,然后跳转到红包的界面方便用户 思路:获取“读取通知信 ...

  8. Android开发学习之路-SimpleAdapter源码分析学习

    今天在课堂上,老师用到了SimpleAdapter,然后女神在边上问我为什么这个SimpleAdapter不能做到我app那种带有进度条的效果,言语说不清,然后就开始看源代码,发现这个Adapter的 ...

  9. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  10. 每天一个linux命令(17):whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...