为何正则表达式编写导致CPU使用率持续攀升?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2123个文字,预计阅读时间需要9分钟。
最近几天项目监控信息突然报告异常,机器上CPU利用率接近100%。使用Java自带的线程Dump工具,我们导出了问题的堆栈信息。
前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。
藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下
我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。
很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。
本文共计2123个文字,预计阅读时间需要9分钟。
最近几天项目监控信息突然报告异常,机器上CPU利用率接近100%。使用Java自带的线程Dump工具,我们导出了问题的堆栈信息。
前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。
藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下
我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。
很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。

