作为一个前端工程师,大家日常也会维护一些 Node.js 服务,对于一个服务我们首先要关注的就是它的稳定性,可能大部分同学对服务端的很多概念不会理解的特别深刻,所以在稳定性上面也不知道去关注什么。
去年双十一腾讯云搞活动,198元购买了三年轻量级服务器的使用权,配置:4G内存,8G带宽,1200G月流量,80G硬盘,因此,我就闲来无事部署了属于我自己的个人网站;大概部署几个服务:Nginx、Redis、MySQL、jenkins、vue项目、博客网站等。
我们应对单台应用服务器做压力测试,你只有知道了单台能够承受多少才能知道集群能承受多少。
不知道大家有没有注意到,在22.10.31 21点之后,凯哥的个人博客站点(凯哥Java:www.kaigejava.com)访问速度提升了不少。那是因为凯哥对站点做了优化。本文就记录优化方面:
最近在维护公司线上的服务器,排查了一些问题,所以做一个总结。有一段时间,线上环境变得很卡,客户端请求很多都报超时,因为线上没有良好的apm监控,所以只能通过流量高峰期和日志去排查问题。通过排查,发现数据库的慢查询日志在比之间的暴涨了十倍,然后发现,memcache服务器(8核)负载很高,cpu一直在50%的左右,原因就是memcache服务器内存用完,导致内存的淘汰十分频繁,这样就导致很多请求落到数据库。下面说下主要的排查思路和用到的工具
首先通过我们内部搭建的日志平台发现我们线上环境一个java应用有大量的http接口请求超时,登录linux服务器查看网络环境没有问题,判断是应用自身运行异常,重启应用后发现异常还在,开始查找问题。
在日常运维工作中,会碰到服务器带宽飙升致使网站异常情况。作为运维人员,我们要能非常清楚地了解到服务器网卡的流量情况,观察到网卡的流量是由哪些程序在占用着。 今天介绍一款linux下查看服务器网卡流量占用情况的工具:Nethogs,来自github上的开源工具。 它不依赖内核中的模块。当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个程序占用了大量带宽。节省了查找时间。 Nethogs安装: 方法一:在epel源中可以直接yum安装 [root@dev src]# yum install -
Java常见线上问题总结绝⼤多数Java线上问题从表象来看通常可以归纳为4个方面:CPU、内存、磁盘、网络。比如,应用上线后突然CPU使用率99%、内存泄漏、STW时间过长,这些问题通常可以分为两大类:系统异常 (CPU占用率过高、磁盘使用率100%、系统可用内存低等)业务异常 (服务运⾏⼀段时间⾃动退出、服务间调⽤时间过⻓、多线程并发异常、死锁等)1.如何去定位问题解决问题的第⼀步是定位问题,排查手段⼀般包括以下⼏项,也可以将此理解为排查顺序:业务⽇志分析排查APM分析排查物理环境排查应⽤服务排查云⼚商或
研发工程师日常的工作除了开发实现新需求之外,排查定位问题也是重要的组成部分。如果在发生线上故障的时能够快速定位线上bug并且修复bug,不仅是研发工程师技术能力的重要体现,同时也可以帮助线上及时止血避免平台故障进一步蔓延,从而导致影响用户体验或者产生不可挽回的资损。但是实际上很多研发工程师由于工作经验还不充足,导致经常在遇到问题的时候不知所措,不知道该如何分析排查定位问题。因此本文主要聚焦日常工作中经常遇到的异常场景,梳理了问题排查定位的思路大图,这样大家在实际项目中如果遇到类似的异常场景,可以按照思路大图进行问题排查定位解决,相信大家掌握了故障定位的分析套路之后就可以做到遇到问题时临危不乱。
大概在今年三月份的时候突然被紧急调到另外一个项目组解决线上内存泄漏问题。经过两周的玩命奋战终于解决了这个问题这里把心路历程及思路分享给大家。希望可以帮助到各位或现在正遇到这样事情的小伙伴提供一些思路。
今天上午刚想用云服务器传输下文件,当打开finalshell连接服务器时突然发现服务器
今天测试同学反馈API耗时很长,超过3秒的比例很高。 查看日志发现,小部分请求耗时比较大,约2秒左右,但是比例不高,与反馈比例有点不一致。后来发现是有一台服务器停止工作了(进程假死),对请求没有响应,也没有拒绝,重启后问题缓解。 因为第一次出现,没有引起重视。但是过了几个小时候,相同的问题又出现在另外一台服务器上,狗日的墨菲定律。
解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路,以CentOS为例,总结为4步。
服务器硬件有没有问题,网络、存储、内存、CPU情况有没有问题。如果有普罗米修斯、zabbix监控,可以直接查看监控,如果没有则需要进入服务器进行定位。
关键业务的考核指标,重点关注业务价值评价的标准指标,电商类的下单量、支付量等,股票交易类关注买入、卖出以及账户中资金和持有股票的资金的关系等指标。这部分最好是和团队内BA一起确定,建立一套基于业务价值的监控指标。
在极客教育出版了一个视频是关于《Node.js 内存泄漏分析》,本文章主要是从内容上介绍如何来处理Node.js内存异常问题。如果希望学习可前往极客学院:http://www.jikexueyuan.com/course/2561.html 本文章的关键词 - 内存泄漏 - 内存泄漏检测 - GC分析 - memwatch ---- 文章概要 由于内存泄漏在Node.js中非常的常见,可能在浏览器中应用javascript时,对于其内存泄漏不是特别敏感,但作为服
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
这几天自己线上的乞丐服务器遇到一个问题,io会瞬间飙升到很高很高,造成内存使用飙升。但是实际上并发量并不大(网络连接数)。知道是哪个进程造成的,但是确实排查代码中没有是么地方会有这么大的读写。实在想不通。
Gavin Zhu,携程软件技术专家,负责监控系统运维开发、ES系统运维及Clickhouse技术应用推广及运维工作。
某后端系统,处于整个调用链路偏后的位置,对接口性能有着比较严格的要求。因此对外承诺的三个9响应时间为200多毫秒。
系统的稳定性是系统长期稳定运行能力,需要时间累积才能度量。平台的某些问题需要达到一定时间、一定的使用量后才会暴露出来。如内存泄漏,系统运行过程中发现部分服务的部分接口会发生服务不可达的情况。 从而团队提出对平台进行稳定性分析,通过给系统施加一定业务压力大情况下,使系统持续运行一段时间,以此来检测系统是否稳定运行(下统称稳定性测试或测试)。
Nginx 是一款轻量级的 Web 务器,特点是高性能、高并发。它由俄罗斯程序设计师伊戈尔·赛索耶夫开发,供俄国大型入口网站及搜索引擎 Rambler使用。Nginx 在 BSD-like 协议下发行,是一款高性能 Web 服务器,目前在 Web 服务器中排名第二。虽然 Apache 还是全球 Web 服务器的“老大”,但是 Nginx 已经占到了 Web 服务器市场 22% 以上的份额, 是成长最快的 Web 服务器 。Nginx 使用了大量的高并发和低内存占用技术,井使用了高可靠性技术,拥有高过 Apache 一个数量级以上的接入能力。因为并发能力强的特点, Nginx 在中国的互联网公司中得到了大量应用,中国的大型互联网公司无一不使用了 Nginx ,以应对中国众多的网民,以及各种抢购热潮 (如“双十 ”)、世界杯等热点事件。Nginx 在这种大量的流量涌入、需要分流、导流、反向代理的场合下得到大量应用。
Python 网络编程中的线程主要用于实现多客户端同时连接服务器的功能。在网络编程中,多线程服务器编程可以提高服务器的并发性能和吞吐量,能够更好地满足大规模网络应用的需求。
很多年以前,当我还是一个开发菜鸟的时候,觉得写代码是很牛逼并且很关键的事情,当听到有人说做一个项目或者开发一个系统,代码的编写工作只占其中30%的工作量时,当时的我对此说法嗤之以鼻,感觉开发工作受到了侮辱。后来,自己开始做技术leader、项目经理、做架构,慢慢认识到软件开发是一个系统工程,代码编写真的只是其中的一环,而且如果代码写不好测试不到位的话,那就是噩梦的开始。经历过多次噩梦洗礼之后,认清一个现实:CRUD,Ctrl c,Ctrl v,这不是高科技。开发与测试/运营/业务,不是对立关系,而应该相辅相成,如果开发人员对代码抱有敬畏之心,明白每行代码会带来什么样的系统行为,对测试/运营/业务抱有开放包容的心态,对他们的挑刺当成一种鞭策和挑战,写出更加“美丽”的代码,那这样的开发人员将是任何公司的财富。
这两年见证了公司从600人发展到1200+的过程,虽然公司在安全投入上还算慷慨,但是人员编制有严格要求,一个人的安全部只能把精力放在基础/重点工作上。其中防病毒这块也是两年前才正式部署了企业版防病毒软件,推广过程中也遇到了很多阻力及各种奇葩的安全理念(比如生产服务器我不敢装防病毒,万一瘫了怎么办;领导的电脑,防病毒还是别装吧,装了会很慢),这期间也遇到多起病毒木马事件,每次我都会借助安全事件,狠狠的推一把防病毒软件,目前为止,已经实现所有PC和Windows服务器防病毒软件的百分百覆盖。现将几起病毒木马的处理过程整理一下跟大家分享,本系列偏向于实战。
之前介绍了redis的monitor,今天有朋友问monitor是否能长时间开启,我知道monitor会有较大性能开销,但不清楚具体消耗的程度,就测试了一下 测试过程 以一个monitor为例,使用redis-benchmark分别测试monitor开启前后的性能 redis-benchmark -c 10 -n 100000 -q 开启前结果 PING_INLINE: 92506.94 requests per second PING_BULK: 97943.19 requests per se
1、java.lang.OutOfMemoryError: PermGen space
造成内存泄露的根本原因就是我们写的代码中存在某些对象长期占用内存,得不到释放,且这个对象占用的内存会逐步增加,导致 v8 无法回收,从而造成的服务的异常和不稳定,甚至是服务的中断和崩溃。
本文章来自我的微信个人技术公众号---网络技术修炼,公众号中总结普及网络基础知识,包括基础原理、网络方案、开发经验和问题定位案例等,欢迎关注。
内存溢出 out of memory : 通俗理解就是内存不够用了,是我们工作当中经常会遇到的问题,内存溢出有可能发生在正常的情况下,而非代码层面问题导致,比如高并发下,大量的请求占用内存,垃圾回收机制无法进行回收,而导致的内存溢出,这种情况就需要我们去调整架构了。一但出现内存溢出问题,我们需要快速定位并解决,尤其是生产环境,所以针对内存溢出问题,我们需要掌握一些常用的排查工具,针对不同场景、现象有快速排查思路。引起内存溢出的原因有很多种,常见的有以下几种:
服务器的资源是有限的,但由于这个资源是虚拟的,在使用时容易出现冗余,从而被浪费;有时候也会使用不当,使得服务器性能低下,和硬件配置不符。因此提高服务器性能,是一个合格的管理员必须掌握的技巧,服务器效率的提升,也能提高服务器性价比,获得更好的效益。那么服务器要如何提高性能呢?
如今,在全球各地,数以千计的公司、组织和个人都依赖于服务器来存储和访问重要数据,托管应用程序,以及提供服务。但是,这些服务器不断面临着来自网络黑客的威胁,因此服务器的安全成为了当务之急。
为了减少频繁创建和销毁进程的开销,apache在启动之初,就预先fork一些子进程,然后等待请求进来。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
不知道是公司网络广了就这样还是网络运维组不给力,网络总有问题,不是这边交换机脱网了,就是那边路由器坏了,还偶发地各种超时,而我们灵敏的服务探测服务总能准确地抓住偶现的小问题,给美好的工作加点料。
在企业业务信息化之后,企业业务依赖于各种应用系统,应用系统又依赖于各种IT资源。当IT资源出现故障或性能下降时,会导致应用宕机或性能下降,进而影响企业业务产出。资源监控就是对那些可能影响IT资源服务能力的各种技术性能参数进行全面监控,以便提前发现问题隐患并预警,帮助企业将故障消灭于萌芽状态之中。
在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员。本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写。
Hi,大家好,今天依然是金三银四面试系列,如果你想了解之前的面试相关文章可以在文末点击👉「阅读原文」查看更多或者点击以下👇「蓝色字」查看最近文章。 金三银四跳槽季,自动化面试题预热一波 金三银四求职季,接口自动化面试题助攻一波 金三银四季招聘季,APP测试面试题温新一遍 以下分享性能测试相关面试题,欢迎在文末留言补充评论✍️。 一 解释常用的性能指标名称与具体含义 性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中
该文讲述了通过分析 Node.js 程序运行时的内存快照来定位程序异常的方法。首先介绍了 Node.js 程序运行时内存快照的基本概念和作用,然后详细描述了如何利用 heapdump 工具进行内存快照的分析。最后,总结了通过分析内存快照发现程序异常的方法,并提供了一些最佳实践。
由于新版的 KV 、金山、 瑞星 都加入了对网页、 插件 、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。
性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。
读过《重构 - 改善既有代码的设计》一书的同学们应该都很了解“代码的坏味道”。当然确定什么是代码“坏味道”是主观的,它会随语言、开发人员和开发方法的不同而不同。在工作当中,很多时候都是在维护之前的项目和在此基础上增加一些新功能,为了能让项目代码易于理解和维护,要时刻注意代码中的“坏味道”,当发现代码如果有坏味道了,要及时去重构它使其变成优秀的整洁的代码。今天我们要聊的是“坏味道的代码”给系统性能带来的影响,笔者会给大家展示几个案例,希望能对大家有所启发和帮助。
标题1: 60G的内存占用, 容器敢分配, 服务敢占用. 一个字:绝 标题2: 内存挤爆了. 竟然是因为… 标题3: 内存问题虐我们千百遍 标题4: 慎用BitMap, 小心玩爆你的内存.
长连接是一种在网络通信中,客户端与服务器之间保持持久性连接的通信方式。在长连接中,一旦建立连接,客户端和服务器之间的通信通道将保持打开状态,直到其中一方显式关闭连接或发生通信异常。这与传统的短连接方式不同,传统的短连接在每次通信结束后都会关闭连接。
领取专属 10元无门槛券
手把手带您无忧上云