【发布时间】:2011-05-25 16:58:24
【问题描述】:
情况是这样的。
在我被分配到 mantain 的 Java Web 应用程序中,我被要求改进 QA 期间压力测试的一般响应时间。这个网络应用程序不使用数据库,因为它应该是轻量级和简单的。 (我不能改变那个决定)
为了保持配置,我发现每次您对其进行更改时,都会将包含配置对象列表的通用对象序列化为一个文件。
使用 Jmeter,我发现在给定的测试用例中,有 2 个请求占用了大部分时间。这两个请求都添加或更改了一些配置对象。由于对文件的访问必须同步,当很多用户在更改配置时,文件必须在几秒钟内完成多次写入,并且请求正在等待文件写入发生。
我认为所有这些序列化根本没有必要,因为我们一次又一次地重写大部分对象,每个请求中的更改都是针对一个对象,但每次都将文件作为一个整体写入.
那么,有没有办法减少实际文件写入的次数,但仍保证所有更改最终都被序列化?
任何建议表示赞赏
【问题讨论】:
-
为什么要将配置存储为序列化对象?
-
这不是我的选择,设计师认为它会很好很简单,不幸的是,他不在身边看到结果,我负责“让它对 QA 人员足够快”。 ..任何方式我都不能在不久的将来改变它,因为设计已经被批准并且功能测试已经结束。改变它的根源以使用db4o 或 JavaDB 将根据政治将我们带回开发阶段......并且至少延迟 3 周。我讨厌现在为如此糟糕的设计负责。
标签: java performance serialization file-io concurrency