一个 asp.net core 站点,之前运行在 linux 服务器上,运行一段时间后有时站点会挂掉,有一次的症状是 asp.net core站点在高并发下出现的“EMFILE too many open files”问题 。

昨天将该站点升级至 .net core 1.1(之前用的是 .net core 1.1 preview1)并部署到 windows 服务器的 IIS 上,在同一个负载均衡下部署了2台服务器。

今天早上发现其中一台服务器出现503错误,登上服务器一看,该站点的进程内存占用竟然有1.2G,而同一负载均衡中另外一台正常的服务器内存占用只有40多M。然后看了一下进程中的线程数,惊呆了——竟然有8000多个线程!而另外一台正常的服务器只有20多个线程。

接着将这台服务器从负载均衡上摘下来,这时出现了更加让人惊呆的现象——在没有请求的情况下,这个 asp.net core 站点进程的内存占用与线程数一直在增长。就像在代码中写了一个死循环,在循环中不停地创建线程。

9:30左右是1.2G内存8000多个线程,到了11:09左右内存增长到1.8G,线程数增长到1.3万,而且还在持续增长。

不仅内存与线程数在增长,而且CPU也一直在波动,这可是在没有任何请求的情况下,谁在偷偷地干活?

从目前分析的情况看,罪魁祸首可能是 EnyimMemcachedCore (支持.net core的memcached客户端,是我们从 EnyimMemcached 移植过来的),EnyimMemcachedCore 用到了 Socket 池,问题可能出在 Socket 池部分,源代码在 github 上(EnyimMemcachedCore源代码)。

目前不知道从何处下手排查这个问题,很期待您的高见。

linux线程一直在增加,在.net core中遇到的奇怪问题:内存与线程数一直增长相关推荐

  1. 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 栈是什么?栈有什么作用? 首先,栈 (stack) ...

  2. Linux中的各种栈:进程栈 线程栈 内核栈 中断栈

    Linux中的各种栈:进程栈 线程栈 内核栈 中断栈 栈的作用 1. 函数调用 2. 多任务支持 Linux 中有几种栈?各种栈的内存位置? 1. 进程栈 2. 线程栈 3. 进程内核栈 4. 中断栈 ...

  3. Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构.这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 ...

  4. Linux系统中消息队列,共享内存、信号和线程的基本操作使用方法

    Linux系统中消息队列,共享内存.信号和线程高级操作 第十一章 消息队列 10.1消息队列定义 10.2 消息队列特点 10.3 key值 10.4 创建消息队列 10.4.1 发送消息 10.4. ...

  5. Linux服务器的最大内存和CPU数

    从网上查了很多资料.总算把linux下的内存和cpu个数搞清楚了.个人觉得使用linux系统的朋友都应该了解下.先公布如下,如有错误,请反馈给我.谢谢!! Linux系统/服务器能够支持的最大内存和C ...

  6. 服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...

    一个 asp.net core 站点,之前运行在Linux 服务器上,运行一段时间后有时站点会挂掉,在日志中记录很多"EMFILE too many open files"的错误: ...

  7. Linux下程序崩溃dump时的 core文件的使用方法

    Linux下程序崩溃dump时的 core文件的使用方法 1.在启动程序前执行 ulimit -c unlimited unlimited 表示生成文件的大小限制,也可以修改为自定义的大小,例如: u ...

  8. 在linux的weblogic上增加启动参数

    如何在linux的weblogic上增加启动参数 在windows的myeclipse非常简单,就是 window-preference-myclipse-application server-web ...

  9. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

    线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...

最新文章

  1. oracle update批量修改sql语句编写
  2. 上海交大:我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
  3. spring mvc给参数起别名
  4. 蓝桥 算法训练 P0505
  5. Convert.ToInt32()与int.Parse()的区别 (转载)
  6. Servlet中过滤器的实现原理(源码实现)
  7. HH SaaS电商系统的仓储系统设计
  8. 关于win时间同步的解决方案
  9. [Android]Activity启动过程
  10. UIView的Touch事件UIControlEvents详解
  11. Python 的几种推导式
  12. linux中crontab的用法
  13. mnist数据集python导入_关于Pytorch的MNIST数据集的预处理详解
  14. 【青梅快讯】不断前行,Greenplum发布最新版本 6.16.2
  15. 一个完整的html代码是什么,html是什么?一个完整的html代码告诉你(完整实例版)...
  16. Markdown标题加粗居中写法
  17. “拷打”两天,扎克伯格胜利大逃亡!
  18. 线上测评图形题技巧二
  19. 基于MATLABCCS实现代码生成及下载
  20. 分布式系统与网络分区

热门文章

  1. 7月10日云栖精选夜读丨ApsaraCache开源之路,阿里云Redis团队LC3全球顶级开源峰会获CRUG开源社区最具影响力奖...
  2. linux配置时间同步
  3. Post和Get差异
  4. Windows系统查看端口占用
  5. ArrayList与LinkedList的比较
  6. PAT甲级1116 Come on! Let‘s C:[C++题解]哈希表、素数
  7. Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例
  8. 安卓手机怎么查看iccid_安卓便签敬业签怎么查看日历月视图中一天所有的新增内容?...
  9. bdd行为驱动开发 java_行为驱动开发(BDD)如何与领域驱动设计(DDD)结合?
  10. 华为浏览器推荐关闭_华为手机的不明照片是哪来的?这3个设置得关闭,否则128G也不够...