最近动态

一入JVM深似海

精细化JVM应用性能剖析工具

我们常说“精细化运营”、“精细化管理”,那什么是“精细化性能剖析”呢?在回答这个问题之前,我们先看看我们这个行业开发人员饱受的困扰:

不清楚应用的运行情况,包括但不限于GC情况、热点代码、热点线程、异常(特别是被吞没的异常);

不清楚应用代码执行情况,甚至不知道某个模块是否还可能会运行,尤其是对于有着一定历史的应用,可能已经有很多开发在上面贡献过代码,但随着业务发展这些功能可能已经不再被使用;

不清楚应用的IO情况,注意,这里说的绝对不仅仅是zabbix上的"磁盘IO",而是具体到某个文件、某个端口、某个线程的IO情况;

这些问题导致的直接后果就是:对于性能优化,无从下手,只能凭经验和直觉去猜测、埋点、优化,当然,最终结果一般就是“加机器扩容”。

了解了我们锁遇到的困扰或者面临的困境之后,我们结合精细化运营和精细化管理的概念来回答什么精细化性能剖析。精细化是基于规范化的基础上建立的一种理念,我们要把目标粒度细致化、精准化、具体化。精细化性能剖析,是基于某种规范详细的分析应用的性能,能够量化性能指标,明确出问题的瓶颈。

值得高兴的是JDK7以上已经内置了一款新型的性能剖析工具,也就是今天要重点介绍的-Java Flight Recorder,简称JFR,可以类比为飞机上的黑匣子。

阅读剩下更多

默认配图
PHP是最好的语言

解决Wordpress耗尽可允许分配内存的问题

起因

最近想要在博客中增加 Google AdSense,安装了 WordPress 插件,打开博客管理后台时,一直加载不出来。以为开了代理的问题,关掉代理,发现依然打不开。猜想可能是安装的插件有问题,导致加载失败。登录到服务器,查看 nginx 的日志。

错误日志

在 nginx 的 error.log 发现了如下信息FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 32768 bytes),排除是插件导致的问题。

这个问题发生的原因是,PHP 程序已耗尽了可允许分配的最大内存 33554432 bytes,也就是 32 MB,尝试分配 32768 字节时发生了致命的错误。那就是说,我们在 php 服务的配置 memory_limit 是 32MB,这个值太小,需要修改该值。

阅读剩下更多

默认配图
一入JVM深似海

Mac之Catalina OS中编译OpenJDK8

如果想深入学习JDK内部的实现机制,最便捷的途径是自己手动编译一套JDK,通过静心阅读和调试跟踪JDK源码去深入了解Java技术体系的原理,结合各类书籍、文章和博客,对比理解,更容易让你了解JDK是怎么运作的,底层都做了什么。

本篇文章是作者在Mac OS X Catalina 10.15.1 环境下编译总结的,在其他的版本中可能不适用,但对于解决编译过程中遇到的错误或许也能提供一些帮助。

阅读剩下更多

默认配图
生产工具专题

多SSH KEY切换部署同步代码

需求场景

大部分开发者个人的代码基本都同步在代码托管平台管理,业内著名的有github、gitlab等,国内也有开源中国的码云(gitee)平台、coding.net平台。有时候,想玩一些有趣的东西,比如用流行的 CMS 搭建一套自己的博客系统(比如 Wordpress),而这些 CMS 都支持在线更新功能、打补丁 fix bug,增加一些合适的插件等。这样我们可以直接在管理后台选择更新系统,而无需先下载到本地,再通过FTP等方式上传到服务器重新部署。

阅读剩下更多

默认配图
云原生技术栈

CentOS安装docker与代理设置

CentOS安装docker

注意:不要采用yum直接安装CentOS repository自带的docker。

1. 安装

先卸载已有的docker环境:

1
2
3
4
5
6
7
8
9
10
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装所需的软件包。yum-utils提供了yum-config-manager功能,而device-mapper-persistent-datalvm2devicemapper存储驱动程序所需。

1
2
3
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

阅读剩下更多

默认配图
返回顶部