在本地开发模式下,我可以使用以下代码从我的 war/ 目录中的 ~7.4MB 文件读取到一个对象中(删除了所有的 try/catch 内容)
FileInputStream fis;
fis = new FileInputStream("myObject.dat");
ObjectInputStream ois;
ois = new ObjectInputStream(fis);
myObject = (ArrayList<ArrayList<ArrayList<float[]>>>) ois.readObject(); //-- ! prod mode gets stuck here! but dev mode is fine
在本地开发模式下,它工作得很好,可以在几秒钟内读取对象。
当我部署到 AppEngine 时,读取文件时出现超时错误。它找到文件并开始读取,但无法及时完成。这是一些错误堆栈:
java.lang.ExceptionInInitializerError ...
引起:com.google.apphosting.api.DeadlineExceededException:此请求 (...) 开始于 2012/06/21 02:19:57.368 UTC 并且仍在 2012/06/ 执行21 02:20:56.928 UTC。在 java.io.FileInputStream.read(Native Method) ...
当我将“myObject.dat”文件变小时,它可以在生产模式下工作,所以代码本身很好,只是 GAE 无法像我的本地模式那样快速读取较大的文件!GAE 服务器怎么会比我的小本地机器慢?