Java Keystore 是否存在性能问题? [复制]

2024-05-03

我们开发了一个应用程序来加密/解密来自服务器的请求/响应。我们正在做性能测试 加密/解密应用程序,我们观察到加密/解密过程需要时间,而许多线程 正在同时做。为了识别问题,我们记录了加密/解密过程中的所有方法。 从记录器中我们发现密钥获取过程占用了整个过程时间的 70-80%。

  1. 我们使用AES算法进行加密/解密
  2. AES 密钥存储在具有唯一 ID 的密钥存储中。
  3. 在加密/解密过程之前,我们从密钥存储中获取针对唯一 ID 存储的 AES 密钥并执行加密/解密。
  4. 当密钥存储大小增加时,性能会变得更差。

进一步分析,我们发现Key store内部使用的是HashTable。这是给予绩效的问题吗?

当密钥库大小为2002时---TPS为85 密钥存储大小为 14007 -- TPS 为 38

请帮忙。


我面临这个问题......我已经在下面的帖子中回答了这个问题。

与执行速度相关的问题因不同的操作系统平台而异。

JVM 将密钥存储加载到内存中。它有哈希表集合作为内部存储。

哈希表是同步的。

每当您从密钥存储执行获取操作时,它都会从内存中的密钥存储而不是从物理密钥存储返回它。您可以通过在 Linux 基本操作系统中使用 ("top" - %wa 部分) 命令来确认。

密钥存储使用哈希表,这是性能下降的根本原因。

我通过在初始化项目时将密钥库中的所有密钥加载到 ConcurrentHashMap 中解决了这个问题。之后,所有读取操作都将从 MAP 而不是 keystore 执行。并确保所有写入操作都将在密钥库和 MAP 上执行。

Java Keystore.getKey() 缓慢,同时密钥存储大小增加 https://stackoverflow.com/questions/38457864/java-keystore-getkey-slow-while-key-store-size-increase/38459647#38459647

希望这会有所帮助..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Keystore 是否存在性能问题? [复制] 的相关文章

随机推荐

  • 类和结构在填充和继承方面的区别

    以下所有操作都将在 GCC 9 1 上使用编译器资源管理器 https github com mattgodbolt compiler explorer 在 x86 64 中 使用 O3 我有这个代码 struct Base Base do
  • Xcode 项目/应用程序名称带有空格问题 - 找不到框架

    Xcode 6 1 是否可能因为我的 3 个单词应用程序名称而找不到我之前导入的框架 我正在使用 Parse 从来没有遇到过任何问题 但实际上 当我在 Xcode 中打开我的项目时 我收到一个错误 提示框架未找到 这是荒谬的 因为它之前运行
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e
  • Javascript - 从 AWS s3 存储桶读取镶木地板数据(使用快速压缩)

    In nodeJS 我正在尝试读取镶木地板文件 压缩 snappy 但没有成功 I used https github com ironSource parquetjs https github com ironSource parquet
  • 如何识别 R 中行的镜像重复项

    在下面的SO帖子中如何识别 R 中行的部分重复项 https stackoverflow com questions 54661129 how to identify partial duplicates of rows in r 5466
  • 在 O(nloglogn) 最坏情况时间内对具有 O(logn) 个不同元素的 n 元素数组进行排序

    目前的问题是标题本身的内容 即给出一种算法 该算法在 O log logn 最坏情况时间内对具有 O log n 个不同元素的 n 元素数组进行排序 有任何想法吗 此外 您通常如何处理具有多个非不同元素的数组 O 日志 日志 n 时间足以让
  • 如何在 flatpak google chrome 中从 intellij 打开浏览器预览

    当我尝试在 Google Chrome 中打开浏览器预览时 遇到以下错误 不幸的是 我通过以下方式安装了 Google Chromeflatpak https flathub org apps details com google Chro
  • #NUXT.JS 中常用组件方法的存储位置

    实际上我想知道 NUXT JS 中常见组件方法的存储位置 我尝试过的事情 gt 在中间件中存储公共代码 它没用 因为据我所知 中间件只能处理对服务器的请求和响应 methods states methods SwitchManager fu
  • 使用 redux-thunk 取消之前的异步操作

    我正在使用 redux thunk 中间件构建一个 React Redux 应用程序来创建和处理 Ajax 请求 我有一个经常触发的特定 thunk 我想在触发新请求之前取消任何先前启动的 Ajax 请求 这可能吗 一种方法是通过为这些请求
  • bootstrap 一般如何工作,特别是在 Zend Framework 中?

    我正在阅读 Zend Framework 手册 但无法理解引导程序如何工作 特别是在 ZF 和一般情况下 他们写 您的 Bootstrap 类定义了要使用哪些资源和组件 初始化 好的 这意味着应该首先实例化 Bootstrap 类 但随后他
  • Rails 渲染不必要的信息

    我一直在使用 RoR 和 Bootstrap 我试图将我的代码渲染成我在网上找到的片段 基本上我的索引中有这个 div class col md 6 div class well well sm div class row p p p p
  • 如何返回给定长度的所有列表元素?

    我正在尝试返回具有特定长度的单词 这是我到目前为止的代码 words是一个列表并且size是一个正整数 def by size words size for word in words if len word size 我不知道如何继续 b
  • Promise 完成后导出模块

    我实际上想将 read 函数放在不同的模块中 然后在我的主 app js 中需要它 我对使用承诺还很陌生 修改 var dir require node dir var files function getFiles return new
  • 使用自己的网络服务器实现一致的安全 Google Play 应用内购买场景

    我已多次阅读了中的所有文档Android 开发者指南 http developer android com guide google play billing index html并熟悉了精彩的 Google 演示躲避海盗并阻止吸血鬼 ht
  • 使用 JDBC 3.0 实现对嵌套事务的支持

    我们的遗留应用程序使用 JDBC 3 0 它通过实现自己的事务管理器来支持事务 该事务管理器能够为每个线程返回相同的 JDBC 连接 我最近发现的问题是它不支持嵌套事务 如果一个事务在另一个事务中启动 那么在内部事务上下文中运行的每个 SQ
  • 如何使用 gulp webpack-stream 生成正确命名的文件?

    目前我们正在使用Webpack https webpack github io 对于我们的模块加载器 以及Gulp http gulpjs com 对于其他一切 sass gt css 以及开发 生产构建过程 我想将 webpack 的东西
  • 与 Python 中的另一个命令行程序交互

    我需要编写一个 Python 脚本 它可以运行另一个命令行程序并与其标准输入和标准输出流交互 本质上 Python 脚本将从目标命令行程序中读取数据 通过写入其 stdin 进行智能响应 然后再次从程序中读取结果 它会重复执行此操作 我查看
  • Microsoft 认知 API 的正确密钥

    我目前正在尝试在 MS 认知服务 Bing 搜索 API 上进行新闻搜索 我读过很多文档 但似乎被困住了 这是我正在使用的代码 url https bingapis azure api net api v5 news search q mi
  • C++ 进程管理 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个众所周知的 可移植的 好的 C 进程管理库 我发现了一个很有前途的图书馆叫做升压过程 htt
  • Java Keystore 是否存在性能问题? [复制]

    这个问题在这里已经有答案了 我们开发了一个应用程序来加密 解密来自服务器的请求 响应 我们正在做性能测试 加密 解密应用程序 我们观察到加密 解密过程需要时间 而许多线程 正在同时做 为了识别问题 我们记录了加密 解密过程中的所有方法 从记