Posted in  .net core 

一、前言

这个问题本来不是特别亟待解决的问题,但是堵在心里实在难受,总想知其然,并知其所以然。

先说结论:不是内存泄露,是asp.net垃圾回收机制问题:默认情况下,服务器CPU内核数决定asp.net core内存垃圾回收策略。纯属基础不扎实,凌晨写文章记录并反省。

Read more →
Posted in  .net core 

前言

晚上登录了下服务器,发现api还是存在内存上涨的情况。查看了api代码,确认是csredis的publish出了问题。把csredis源码拖了下来,看下到底是哪里出的问题。

源码排查

下载地址: https://github.com/2881099/csredis/archive/refs/heads/master.zip

Read more →
Posted in  .net core 

前言

最近在用.Net Core 做业务模块时,发现经常会出现TimeOut 超时的情况。然后看了官方的解释,说2.0版本之后维护了一个专用的线程池。我就打算阅读源码,看一下这个线程池的实现。

Read more →
Posted in  .net core 

var culture = CultureInfo.CreateSpecificCulture("zh-CN");
var dateformat = new DateTimeFormatInfo
{
    ShortDatePattern = "yyyy-MM-dd",
    LongDatePattern = "yyyy-MM-dd hh:mm:ss"
};
culture.DateTimeFormat = dateformat;

var supportedCultures = new[]
{
    culture
};

app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture(culture),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});

From: https://stackoverflow.com/questions/56748968/how-to-set-date-formats-and-culture-in-asp-net-core-razor-pages-2-2

Posted in  .net core 

服务 CPU 或 内存偶尔飙高是部署环境中经常遇到的问题,一般会采用记录日志的方式来诊断,不过有些情况靠日志可能并不能分析出个所以然,面对实在无头绪的问题也只能暂时使用重启大法先恢复。

为了尽可能精准的定位问题,掌握通过 dump 分析服务运行堆栈信息也是非常必要的,本文将分别介绍如何对 .NET Core 2.2 和 .NET Core 3.1 项目进行 dump 分析(这里只针对 Linux 下使用容器部署的方式)。

Read more →
Posted in  .net core 

今天测试.net core 2.2到3.1时,顺便更新了EPPlus版本。导出excel时报错:

2021-03-31 20:51:27,481 [5] ERRORStaffController - OfficeOpenXml.LicenseException: Please set the ExcelPackage.LicenseContext property. See https://epplussoftware.com/developers/licenseexception
   at OfficeOpenXml.ExcelPackage.get_Workbook()
   at OfficeOpenXml.ExcelPackage.CreateBlankWb()
   at OfficeOpenXml.ExcelPackage.ConstructNewFile(String password)
   at OfficeOpenXml.ExcelPackage..ctor(FileInfo newFile)
   at PartnerPlatform.Service.StaffExport.ExportExcelSingleWorksheets(IDbConnection dbConnection, String sWebRootFolder, String fileName, List`1 staff) in /Users/jinyazhou/Test/PartnerPlatform/Service/ExcelExport.cs:line 43
   at PartnerPlatform.Controllers.StaffController.Export() in /Users/jinyazhou/Test/Controllers/ExcelController.cs:line 19
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.13/System.Runtime.Serialization.Primitives.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.

原因: EPPlus 5.0 以后的版本需要指定 商业证书 或者非商业证书。你需要在代码里指定证书或者降低EPPlus版本。在代码里面指定非商业证书:

ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

参考资料: https://www.hierror.com/exception/article/139035

Posted in  .net core 

需求分析

目前个人网站是使用MWeb写作,然后生成本地html,使用GoodSync通过FTP把本地html同步到网站服务器。

GoodSync功能强大,但是收费软件,过试用期会定期弹窗,且免费版不能同步超过100个文件。

WX20210226-101715

所以我尝试自己写一个同步软件,满足以下功能即可:

  • 指定目录所有的文件,定时同步到FTP远程目录
  • 不要求最终一致性,FTP远程目录内文件允许冗余
  • 空文件夹不做处理
Read more →
Posted in  .net core 

未雨绸缪,公司IoT项目中可能会出现的情况:

  • 多个TCP(UDP)/MQTT服务运行在多台服务器,每台服务器产生大量零碎化的日志文件。如果要查询某台设备某个时段的日志,需要定位到设备的日志文件的服务器,然后去那台服务器拉取日志文件到本地(或在线查找)。
  • 如果把log存到数据库(mysql),按天分表,因每天产生大量的数据,导致查询很慢。

    目前项目量级较小,只想在不增加运维工作的基础上,做轻量级的实现。Exceptionless和ELK太过重量级,也不想为了存储日志单独安装MongoDB。

    目前暂定两个方案: 1、GRPC 2、Redis
Read more →