前言

前端时间刚开始接触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. BIT祝威博客汇总(Blog Index)

    +BIT祝威+悄悄在此留下版了个权的信息说: 关于硬件(Hardware) <穿越计算机的迷雾>笔记 继电器是如何成为CPU的(1) 继电器是如何成为CPU的(2) 关于操作系统(Oper ...

  2. Macaca-iOS入门那些事

    Macaca-iOS入门那些事 一. 前言 最近有朋友向我请教iOS自动化测试框架选型,刚好前段时间做讲座时发现了macaca,遂试用.所以,下面的内容会只围绕Macaca的iOS部分. 二. Mac ...

  3. Atitit dsl exer v3 qb3 新特性

    Atitit dsl exer v3 qb3 新特性 /atiplat_cms/src/com/attilax/dsl/DslParser.java V3 支持typeed参数,与简化的notyp参数 ...

  4. mysql 的简单优化

    合理的建立索引的建议: (1)  越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间,处理起来更快. (2)  简单的数据类型更好:整型数据比起字符,处理开销更小,因 ...

  5. 使用(POI)SAX处理Excel文件,防止内存溢出

    POISAXReader h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-chi ...

  6. WPF入门教程系列六——布局介绍与Canvas(一)

    从这篇文章开始是对WPF中的界面如何布局做一个较简单的介绍,大家都知道:UI是做好一个软件很重要的因素,如果没有一个漂亮的UI,功能做的再好也无法吸引很多用户使用,而且没有漂亮的界面,那么普通用户会感 ...

  7. Script Component 引用package variable

    ScriptComponet 的变量分为两种类型,ReadOnly和ReadWrite,使用C#引用这两种类型的变量,有一点不同. 1,创建两个变量 2,将变量传递给script component ...

  8. codeforces Gargari and Permutations(DAG+BFS)

    /* 题意:求出多个全排列的lcs! 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 最后用bfs遍历整个图, ...

  9. Redis在win7上的可视化应用

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  10. 在Abp中执行sql语句

    目录 前言 最近使用ABP(ASP.NET Boilerplate)做项目,有些查询(或存储过程)直接使用sql语句会更方便一点. 定义一个接口 在Core项目中定义一个接口,如:ISqlExecut ...