首页
专栏 icon
Java各版本特性 Kubernetes in Action笔记
链接 icon
国内常用镜像地址 在线学习资源
关于
  • 线程池原因导致java.lang.OutOfMemoryError

    Jul 19, 2021 java 线程 线程池

    问题描述 线上环境某个服务经常性地抛出内存溢出,看日志是下面的错误 1java.lang.OutOfMemoryError: unable to create new native thread 2 at java.lang.Thread.start0(Native Method) ~[?:1.8.0_112] 3 at java.lang.Thread.start(Thread.java:714) ~[?:1.8.0_112] 4 at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:950) ~[?:1.8.0_112] 5 at …

    阅读更多
  • 阿里云WAF与SNI问题

    Jun 17, 2021 waf 阿里云 sni

    什么是SNI 当多个网站托管在一台服务器上并共享一个IP地址,并且每个网站都有自己的SSL证书,在客户端设备尝试安全地连接到其中一个网站时,服务器可能不知道显示哪个SSL证书。这是因为SSL/TLS握手发生在客户端设备通过HTTP指示连接到某个网站之前。这个有点像邮寄包裹到公寓楼而不是独栋房子。将邮件邮寄到某人的独栋房子时,仅街道地址就足以将包裹发送给收件人。但是,当包裹进入公寓楼时,除了街道地址外,还需要公寓号码。否则,包裹可能无法送达收件人或根本无法交付。 服务器名称指示(SNI,Server Name Indication)旨在解决此问题。 SNI是TLS协议(以前称为SSL协议)的扩展,该协议在HTTPS中使用。它包含 …

    阅读更多
  • 订单ES查询性能优化

    Feb 20, 2021 elastic search 性能优化

    背景 由于系统中的订单量大,一些查询语句需要级联多张表来查询,单纯靠数据库的索引已经无法满足查询速度与用户界面响应速度的要求,因此在5年前引入了ES来加快查询速度。但是,原先的方案中ES存放的是全量的订单数据,并且是存放在同一个数据库索引中,随着业务的发展与订单量的累积,ES查询的速度已经越来越慢。通过Grafana监控数据,可以看到单个索引的数据量已达到1.5TB,主要的性能指标越来越差。ES的CPU使用率不时地大于80%,甚至100%,导致极端情况下ES查询耗时十几秒。对于用户的直观感受就是,在界面上面查询数据,需要耗时很久才能看到数据。 解决方案 系统总是慢慢演变的,某个时间点的解决方案都是基于当前的一些情况,满足近3年内的需 …

    阅读更多
  • jetty临时目录下的资源文件被删导致js等资源找不到

    Jul 14, 2020 jetty

    生产环境上jetty运行一段时间后,在打开某个网页的时候发现有js、css文件找不到,但是重启之后问题会解决。后来发现是设定了tmpwatch后台任务,定时会清理一次系统的tmp目录。 默认情况下,如果没有指定jetty的临时目录,默认会使用系统的临时目录。解决方案就是,修改jetty的临时文件存放目录,不要放在 /tmp 目录下面。主要有下面几个方法: 设置basetempdir值 1<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 2 3 <Set …

    阅读更多
  • rsyslog内存占用高导致服务不可用

    Jun 22, 2020 rsyslog

    这几天生产环境中某个服务内存不时地被撑爆,原先以为是应用的问题,但是近来没有上过新的代码。该服务的总内存是8G,启动参数关于内存的配置大致是:-Xmx=6.4G,-Xms=4G 左右。看了Grafana上面的监控记录,JVM 老年代使用最多也就到4G左右,在GC的日志中发现也仅仅用到4G左右,并没有到达最高的内存值。这两个结果可以看出来,应该不是应用程序导致内存占用过大。 后来用top命令看了一下,发现rsyslog进程使用了将近40%的内存。再查一下日志文件,发现一些日志文件大小都达到2G以上。 rsyslog仅仅是用来同步日志,原则上讲,它仅仅是辅助的进程,不应该占用那么内存,即使它同步延迟较大甚至不工作,也不应该影响到应用程序 …

    阅读更多
  • 用string adapter来解决系统接口对接中发现的空值验证问题

    Jun 1, 2020 java

    客户用的是很旧版本的ERP系统,在与客户系统做接口对接的时候发现了一个问题。假设接口请求需要的body是xml格式的,共有三个字段:name, mobile, email。由于客户ERP系统比较老,如果某个字段没有值,传的是空字符串,而不是将该字段在请求消息体中隐藏。客户发的请求类似下面的例子: 1<xml> 2 <name>John</name> 3 <mobile>13800138000</mobile> 4 <email></email> 5</xml> 由于历史遗留问题, …

    阅读更多
  • Spring Quartz 指定Scheduler Name

    May 31, 2020 spring quartz

    当前项目使用quartz与spring来做基于数据库的集群化任务调度,但是在实际使用过程发现同一个scheduler中,不同group之间任务调度可能会相互跑串。当前项目中使用的 quartz-scheduler 版本 2.3.1, spring 版本 3.2.18.RELEASE。 举个例子,配置是这样的, 下面示例中隐去不重要的配置 1<bean id="my-cluster-scheduler" 2 class="org.springframework.scheduling.quartz.SchedulerFactoryBean" 3 …

    阅读更多
  • 根据ID来管理分布式session - 新老界面session不一致导致强制登出问题的修复

    Jan 26, 2020 session 分布式

    背景 由于历史原因,原先的界面是用vaadin框架来实现。但是这个框架不适合互联网的分布式系统,正在逐步用目前主流的前端框架重写各个模块,把旧的vaadin页面替换掉。在替换过程中,新老界面并存。 vaadin界面的servlet,每次都会判断请求中的session id值,如果在服务器中找不到对应这个id的session,就会重新生成一个。由于session id是在新界面登录的时候生成的,当点击链接从新界面跳转到vaadin界面的时候,vaadin服务会发现没有这个session id,就会重新生成一个新的session。换句话说,新老界面会有各自的session id。当然,分布式系统本来就有这个问题,可以采用分布 …

    阅读更多
  • Quartz job使用过程中的发现问题与改进

    Jan 5, 2020 quartz

    遇到的问题与原因分析 生产环境中遇到的问题: 服务在启动过程中,不时地卡住,后来发生的越来越频繁。看日志分析,卡在初始化quartz job store的时候 服务在运行过程中,不时地出现定时任务不被触发的情况 通过分析,得知问题产生的原因: 目前代码中用的是Quartz scheduler 1.8.3版本,定时框架采用的是行锁,通过执行下面的SQL来锁住特定的记录。在分布式的系统的情况下,节点越多越容易发生锁等待,甚至死锁。Quartz scheduler 的 2.x 版本做了改进,在QRTZ_LOCKS表中多加了一个字段 SCHED_NAME。这有一个好处就是,可以给不同的应用分配不同的scheduler name,这样定 …

    阅读更多
  • 复盘 - 手机app上一行代码导致的生产事故

    Dec 10, 2019 生产事故 复盘

    过程 由于一些历史原因,以及与原先代码的兼容性,临时文件存储在minio中。 某天,生产环境突发事故,minio集群的CPU与内存爆了,只能重启集群。过了十来分钟,很多服务都不可用,健康检查都不通过。日志中的错误信息显示,这些服务都是数据库拿不到连接。需要事先处理数据库连接的问题,于是连接到数据库查死锁,终止导致死锁的sql进程,再重启来恢复这些服务。 由于前不久minio集群挂掉,很容易就想到是由于minio的原因。其他服务通过RPC调用一个文件存储服务来操作minio中的数据,当minio集群挂掉的时候,文件存储服务访问minio一直想访问minio直到超时。在这个期间,其他服务如果有事务调用文件存储服务来操作minio中文件, …

    阅读更多
    • ««
    • «
    • 1
    • 2
    • »
    • »»

Paul Zeng

架构师、团队主管、体育节目爱好者 @Shanghai
阅读更多

精选文章

  • 数据查询ES设计演变
  • 阿里云WAF与SNI问题
  • 订单ES查询性能优化
  • Nginx服务器安全加固
  • 利用frp与nginx实现公网访问NAS
  • zookeeper服务器文件清理
  • terraform中阿里云ECS ssh key变化问题
  • 解决terraform与远程云服务器资源状态不一致的问题

最新文章

  • 数据查询ES设计演变
  • Docker挂载文件,宿主机修改后容器里文件没有同步更新
  • JVM 参数项区别:-D、-X、-XX
  • 企业微信调试工具
  • Spring Boot 自动设置响应头引发的问题
  • On-Premise 与 Private Cloud 区别
  • 不用魔法直接访问 New Bing
  • 鼠标滚轮上下乱跳

分类

JAVA 26 KUBERNETES 18 系统设计与优化 11 POSTGRES 10 LINUX 9 MANJARO 8 DOCKER 5 JETTY 3 MAC 3 NGINX 3 算法 3 ELASTIC-SEARCH 2 NODEJS 2 PYTHON 2
所有分类
CHROME1 DBEAVER1 DOCKER5 ELASTIC-SEARCH2 FIDDLER1 GPT1 HIBERNATE1 JAVA26 JETTY3 KUBERNETES18 LINUX9 MAC3 MANJARO8 MINIO1 MYBATIS1 NGINX3 NODEJS2 POSTGRES10 PYTHON2 REDIS1 TERRAFORM2 UBUNTU1 ZOOKEEPER2 前端1 硬件1 算法3 系统设计与优化11 车机1 运维1
[A~Z][0~9]

专栏

JAVA各版本新特性 21 KUBERNETES-IN-ACTION笔记 18

标签

JAVA 25 KUBERNETES 18 JAVA-8 15 POSTGRES 12 MANJARO 8 DOCKER 6 JAVA-9 5 LINUX 5 NGINX 5 JETTY 4 SESSION 4 SHELL 4 排序 4 ELASTIC-SEARCH 3
所有标签
ALPINE2 BASE641 BING1 CHROME2 CLOUDFLARE1 CLUSTER1 CONFIGMAP1 CONTAINER1 CRITERIA-BUILDER1 CURL1 DATE1 DBEAVER1 DECLARE1 DOCKER6 ELASTIC-SEARCH3 EXCEL1 FIDDLER2 FRP1 GITBOOK1 GPT41 GREP2 HIBERNATE1 HOTSPOT1 INPUTSTREAM1 JAVA25 JAVA-71 JAVA-815 JAVA-95 JCONSOLE1 JETTY4 JMX1 JVISUALVM1 JVM2 KCP1 KUBERNETES18 LAMBDA1 LINUX5 LOCALE1 LOCK1 MAC1 MANJARO8 MIGRATION1 MINIO1 MYBATIS1 NAS1 NGINX5 NODEJS2 OPTIONAL2 PGLOGICAL2 POSTGRES12 PSYCOPG21 PYTHON2 QUARTZ2 REDIS1 RSYSLOG1 SCHEMA2 SECRET1 SECURITY1 SEO1 SERIALIZE1 SESSION4 SHELL4 SNI1 SPRING1 SPRING-BOOT1 SSH1 SSL1 STAMPEDLOCK1 TERRAFORM2 UBUNTU2 UNIX2 VMWARE1 WAF1 WAL-E1 WIFI1 WINCE1 ZOOKEEPER2 从库1 企业微信1 分布式1 升级1 命令2 复盘1 安卓1 对象存储1 导航1 序列化1 性能优化1 截屏1 打印机1 抓包1 挂载1 排序4 数据迁移1 本地部署1 滚轮1 生产事故1 监控1 私有云1 算法3 线程1 线程池1 维修1 证书1 调试1 车机1 轮询1 远程1 长轮询1 阿里云3 集群1 鼠标1
[A~Z][0~9]

Copyright © 2018 - 2023 保罗札记. All Rights Reserved