前言

前端时间刚开始接触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. ASP.NET中一种超简单的Ajax解决方案

    为什么是Ajax2? 因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了... 话说看了评论才发现,原 ...

  2. 【重要更新】Senparc.Weixin SDK v4.4 升级说明

    本次更新同时影响以下所有Senparc.Weixin相关版本的dll: Senparc.Weixin.dll 升级到 v4.4.2(重要) Senparc.Weixin.MP.dll 升级到 v13. ...

  3. xamarin SQLite路径

    xamarin使用SQLite时对应的访问路径各个平台不一样,需要单独引用.在使用前添加SQLite引用包,在解决方案上右击选择解决方案的Nuget管理选项,在浏览中输入sqlite-net-pcl, ...

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

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

  5. 大叔也说Xamarin~Android篇~Activity之间传递数组

    回到目录 我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别 ...

  6. Oracle Redo 以及 Archived日志简述

    Oracle通过Redo Archived实现数据的归档 什么是Redo日志 Redo日志记录了数据的变更,用于在数据库出现故障后,进行数据恢复. 功能主要由三个组件实现:Redo Log Buffe ...

  7. fir.im Weekly - 不能错过的 GitHub Top 100 开源库

    好的工具&资源,会带来更多的灵感.本期 fir.im Weekly 精选了一些实用的 iOS,Android 的使用工具和源码分享,还有前端.UI方面的干货.一起来看下:) Swift 开源项 ...

  8. 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器

    MVC全称是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将 ...

  9. Cocos2d-x 3.2 学习笔记(十四)保卫萝卜之界面UI

         保卫萝卜~上一篇说了使用CocoStudio制作主界面,这里来完善主界面动画及后续界面(主题界面ThemeUI.场景选择界面SelectMapUI),主要涉及的控件PageView. 学习要 ...

  10. PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性

    //php自带函数 getimagesize()$img_info = getimagesize('tomener.jpg'); echo '<pre>'; print_r($img_in ...