通过Environment获取属性文件的值,竟然会调用到JNDI服务!!!| 京东云技术团队

💡 原文中文,约5300字,阅读约需13分钟。
📝

内容提要

某应用在压测过程中CPU使用率超过80%,通过在线诊断工具发现频繁调用environment.getProperty()获取属性值,内部调用了JndiPropertySource.getProperty()。通过属性缓存和避免使用JNDI服务获取属性值,性能提升63%。JNDI是Java的命名和目录服务接口,用于管理和配置资源,但复杂且依赖环境。现代替代方案如Spring和Micronaut提供更简单灵活的资源管理方式。避免使用JNDI可通过配置、环境变量或在线诊断工具实现。

🎯

关键要点

  • 某应用在压测过程中CPU使用率超过80%。
  • 频繁调用environment.getProperty()获取属性值,内部调用了JndiPropertySource.getProperty()。
  • 通过属性缓存和避免使用JNDI服务获取属性值,性能提升63%。
  • JNDI是Java的命名和目录服务接口,用于管理和配置资源,但复杂且依赖环境。
  • 现代替代方案如Spring和Micronaut提供更简单灵活的资源管理方式。
  • 避免使用JNDI可通过配置、环境变量或在线诊断工具实现。
  • JNDI的主要用途包括资源管理、远程对象查找和目录服务。
  • 使用JNDI的复杂性和环境依赖性使得现代应用倾向于选择更简单的替代方案。
  • Spring Boot中PropertySource的优先级影响属性的获取顺序。
  • 可以通过java_opts环境变量添加配置来避免使用JNDI。
  • 建议使用Forcebot平台进行压测和在线诊断,以优化性能。
➡️

继续阅读