NodeJS CPU 占用100%问题排查

上周接到同事反馈,客户服务器不时出现 502 错误,需要定时重启前端服务。上服务器上看了一下 cpu 占用100%,无法响应请求,由于是生产系统,备份了一下日志,重启服务。 疑似 ddos 攻击 看了一下日志,由于应用日志是 warning 级别,并没有太多有用信息,倒是 nginx 日志有大量的无效访问,并且这些访问大部分都是由 100.97. »

Pampas 集成 Spring developer tools 诡异 Bug 排查

为什么写这篇 Blog ? 写这篇 Blog 纯属临时起意, 因为遇见了一个坑, 居然花了几个小时在上面, 一是记录一下, 二来也可以分享出来, 让大家乐呵乐呵. Pampas 最近在做 Hot reload, 就是热加载, 主要是来回人工重启很麻烦, 特别是一次起多个应用的时候. 虽然本文结局有点尴尬, 但也不代表没有收获... 前端好说, 后端特别是 Java 是真心难弄, 特别是 Spring 的上下文, »

pampas docker compose 启动顺序

docker compose 启动顺序怎么了? docker 和 docker compose 就不在此详细介绍了, 小伙伴可自行 google. 后期有精力也可以开一个话题简单介绍一下, 目前在准备的跟 docker 相关的都有 [docker ufs 简析], 还没写完, 后续会放出. 使用过 docker compose 的同学应该都了解, docker-compose.yml 的配置文件里, »

DC/OS 1.8 网络组件介绍

本 overview 有效期有限,据 slack 上一位兄弟言,1.8的 VIPs 由 dcos-minuteman 实现,1.9为 dcos-navstar ,暂不清楚。 DNS DC/OS 提供三层 DNS 服务,主要用于对集群内部进行服务发现。 Mesos-DNS Mesos-DNS 是 »

Pampas 的虚拟域名实现原理

为什么要用虚拟域名? 各位小伙伴在开发过程中, 经常会使用域名的方式访问本地服务. 公司中最常见的就是后端 spring-boot-starter-session 需要设置 cookieDomain. 这样做有什么好处呢? cookie 在各自域名下, 不存在干扰的情况 可以通过域名区分服务, 而不需要记忆端口号 如何使用虚拟域名? 常见设置本地域名, 来访问本地服务的场景, 基本步骤如下: 配置 /etc/hosts -> 设置 Proxy (通常是 Nginx) »

PMP产品方向和产品化优势

PMP产品方向 PMP(Project Manager Platform)作为公司的项目管理工具最重要的目标是承载公司的项目管理相关事务。PMP的规划至今也已经迭代了3个比较大的版本,对比最初对PMP的定性,后续的需求补充对PMP提出了更多的要求和期待,平台规划也随之调整。这种阶段性的调整也引出了一个问题:是不是公司相关的东西都可以做在PMP里面去? 如果要把公司相关的东西都做进去,可以想到PMP未来会是一个大杂烩,功能的规划会不可避免的变得混乱,也会为PMP的产品化带来很多困难。所以,要保证PMP的整洁,主要方向的确定就会很重要。目前在PMP面前的有两个方向,做一个大的OA系统还是向研发管理方向来做。 从公司的需求来看,需要做的是部分研发管理加部分的OA系统。从产品化的角度来说,PMP需要做的是完整的研发管理体系和可剥离的简易的OA模块。原因在于: »

基于 Server-Sent Event 实现多 Clients 状态同步

client(browser)如何从 Server 端获取异步任务的即时状态在很多架构中是需要解决的问题。在分布式架构中,尤其需要考虑多实例(client)之间的状态同步。 本文主要介绍微服务中基于服务提供的 Server-Sent Event 接口实现多个 client 间的状态同步。 基于 HTTP 协议的异步状态获取 基于HTTP 协议的异步任务状态获取方式一般有以下3种: polling:client 不断的轮询 server。即 client »

基于容器的分布式日志收集

0. 基础方案:ELK 大规模系统,特别是分布式系统中,服务化、容器化、运维自动化带来了运维的便利,但是相应的代价是系统复杂性上升,开发人员将面对种种复杂情况的挑战。 其中日志的离散将导致调错成本进一步上升,分布式日志的集中收集处理可能是这一问题的解决之道。 业界有多重面向容器的日志解决方案,不再一一复述,ELK 因为其开源且接受过实战考验,作为我们的日志收集方案之一。 ELK 的架构就不展开详解了,因为关于这方面的文章已经有很多,他的总体思路就是: Logstash(采集) -> Elasticsearch(储存) »

一次纠结的线上问题排查之应用优化

这次旷日持久的web 502问题终于画上了句号,在此总结一发,以表纪念与反思。 起因 客户在年前就已经反应网站经常502,当时还有开发任务没太在意,所以每次502就直接重启服务解决。直到年后,批量操作新功能上线,502问题就非常频繁了,几乎一天一次! 在这里自我检讨一下,对问题没有足够的重视也没有足够的警觉,自身处理这类问题的能力也需要加强。 经过 经过各路大神的分析与调试,这是分析过程, 发现是踩到了曾经的一个坑,鉴权拦截器里有用到GuavaCache,没有设置MaxSize和过期时间,而且每次前端请求发过来,cache的key都会重新new一把,导致重复积累对象,内存得不到释放,最后OOM了。 »

Kotlin 随手记(一): InfluxDB Client 查询封装思路

1. 关于 InfluxDB-JAVA InfluxDB 是 InfluxData 公司的一款开源时间序列数据库,多用于储存日志、持续事件、监控数据之类时间相关的序列化数据。并提供了多种语言的接入方式,并且官方提供了 Java client: inflxudb-java,Kotlin 项目可以直接引入依赖并且使用。 2. 接入方式 InfluxDB 使用 RESTful 接口来查询与写入,官方 Client 便在 »

一次纠结的线上问题的排查

上周五接到一个任务, 说某个客户的一个线上java应用挂了, 现象就是cpu飙升, 几乎跑满, 无法响应请求。ssh连上去看了看应用日志, 有大量的java.lang.OutOfMemoryError: Java heap space 这种类型的日志, 看了看jvm启动参数, 给的比较小, 于是没放心上, 那就分配多一点jvm内存, 周末观察一下再说. 这里需要检讨一下, 调大内存的时候, 就应该加上-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...., 这样内存溢出的时候就可以分析内存快照。 修改了参数后, »

数据中心操作系统 DC/OS 简介

Datacenter Operating System (DCOS) 是在一篇来自Berkeley的论文《The Datacenter Needs an Operating System》中第一次被提出来。 论文引用了一个开源初创项目Mesos — 《A platform for finegrained resource sharing in the data center》。 两篇论文的主要贡献者Benjamin Hindman后来就职于Twitter,并在那里成功的引入了Mesos。 »

升级 Elasticsearch 2.2 到 5.2

elasticsearch 5.2在1月底release了,parana使用的是2.2版本,近日已升级到5.2.release,下面简单讲述一下升级需要改动的一些地方。 Index Level Settings 在5.0之前允许在elasticsearch.yml设置Index Level Settings,在5.0之后做了限制,只允许部分特定的配置项。parana之前在elasticsearch.yml配置的这段settings就需要搬家了: index: "analysis": { "tokenizer": { "ngram_ »

切换 HTTPs 碰到的一个小问题

问题描述: 在岁宝做全站https切换的时候,碰到了一个问题, 未登录情况下,点击需要登录权限的菜单,redirect url的协议头变回了http, 情况类似这样: https://www.ishirble.com/login?target=http://www.ishirble.com/user/index 所以在登录后,协议就变回了http 问题原因: 查了代码发现这个redirect url是后端定义的,后端的代码中则是根据request. »