小编Kat*_*Kat的帖子

Google App Engine 会话在实例之间发生变化

帮助您理解问题的视觉辅助工具。

我很困惑,因为我尝试启动的每个应用程序 100% 都会出现此问题,但我找不到有关此问题的任何信息,而且我在互联网上找不到其他任何人有这个问题。

我使用 Google Cloud Platform 学习 Java Web 开发已经大约一年了,我有一个问题已经困扰了几个月了。我似乎在网上找不到任何提及此问题的信息。

我有一个基于 Java servlet 构建的 Web 应用程序,它使用会话来跟踪登录的用户。应用程序中的所有内容都工作正常,但是当我将应用程序部署到 App Engine 时,用户不断通过后续服务器请求随机登录和注销。我在开发窗口中观察,发现会话 ID 不断在两个不同的值之间变化。

由于应用程序引擎使用应用程序的多个实例来扩展流量和资源管理,因此它可能会在一个实例上接收请求并将其从另一实例发送回客户端。这在客户端没有明显的差异,但我发现每个实例对于我的客户端都有不同的会话 ID,导致每个实例中陷入不同的会话属性。

果然,当我将应用程序减少到一个实例时,我的会话运行良好。但这在生产中行不通,我需要我的应用程序能够根据流量进行扩展并按预期利用应用程序引擎资源。

Google 声称应用程序引擎上的会话是使用 Memcache 和 Datastore 自动处理的,并且访问会话所需要做的就是 use request.getSession(),所以我不明白为什么会出现这个问题。如果我无法理解问题,我将永远找不到解决方案:(

[编辑]:该应用程序使用一个名为 DatastoreSessionFilter 的预先存在的 Web 过滤器来使用 cookie 和数据存储来跟踪会话变量,但它似乎无法正常工作,因为我的会话变量被困在各个实例中。这是 DatastoreSessionFilter 类:

@WebFilter(filterName = "DatastoreSessionFilter", 
    urlPatterns = { "", 
    "/LoginEmail", 
    "/Logout", 
    "/ResetPassword",
    "/SignupEmail", 
    "/VerifyEmail", 

    "/About", 
    "/BulkUpload", 
    "/DeleteAlbum", 
    "/DeletePost",
    "/EditAlbum", 
    "/EditPost",
    "/Events", 
    "/EventsScroll", 
    "/Home", 
    "/HomeScroll", 
    "/Info",
    "/ListAlbums",
    "/ListAlbumsScroll",
    "/NewAlbum",
    "/NewPost",
    "/Support",
    "/Videos",
    "/VideosScroll",
    "/ViewAlbum",
    "/ViewAlbumScroll",
    "/ViewPost",
    "/ViewProfile",
  })

public …
Run Code Online (Sandbox Code Playgroud)

java cookies google-app-engine servlets httpsession

6
推荐指数
1
解决办法
2685
查看次数

Tomcat打开了太多文件(tomcat-users.xml)

今天早些时候,我访问了一个我最近启动的网站,页面上充满了一个丑陋的地方jasperexception: java.io.filenotfoundexception: /opt/tomcat/webapps/root/web-inf/lib/jstl-1.2.jar (too many open files)。我检查了我的服务器日志和tomcat日志,它们充满了相同的错误。我增加了tomcat的最大打开文件数限制,以作为一个临时解决方案来保持网站的正常运行,但是它很快又被填满。我已经使用与该网站相同的方法启动了其他网站,以前从未遇到过此问题。这次我唯一不同的是使用Mobirise制作前端的基本布局,因此我不排除Mobirise使用的某些脚本可能是罪魁祸首。但是,当我获得tomcat已打开的文件列表时,我看到它已经打开了数百个tomcat-users.xml副本,而且它还在不断打开。

...
java    319 tomcat  935r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  936r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  937r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  938r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  939r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  940r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  941r      REG              253,1     2164 263714 /opt/tomcat/conf/tomcat-users.xml
java    319 tomcat  942r      REG              253,1     2164 …
Run Code Online (Sandbox Code Playgroud)

java tomcat

3
推荐指数
1
解决办法
1344
查看次数