常见问题 ############# 开发问题 ============== SAE Java环境是否支持反射? ---------------------------- 支持反射(支持全部Java语言特性)。 SAE Java环境是否支持新开Thread? ---------------------------------- 支持,但是有最大线程数限制(根据各类套餐限制不同)。 SAE Java中的应用是分布式部署的?JVM宕机了怎么办? ----------------------------------------------------- 在创建应用时可选择JVM数量,如果数量大于1则是分布式部署。当发生故障时,首先会自动重启JVM故障节点,如果应用是多节点分布式部署,则路由此时不会将请求发到故障节点上,待节点恢复后再将请求分发过去。 保存cookie时Path如何设置? ------------------------------- 在SAE Java环境中保存cookie和通常情况下没有什么区别,但是如果你需要设置Path的话需要加上contextPath。如: :: cookie.setPath(request.getContextPath()+"/"); SAE Java环境是否能使用微博接口? ---------------------------------- 可以使用,目前已有不少微博应用跑在SAE Java环境中。 应用访问忽然变得特别慢怎么办? ---------------------------------- 一般出现这种情况都是因为内存将近跑满了,首先重启应用释放内存,另外检查代码是否有未释放内存的操作。 应用被禁用了怎么办? --------------------------- 首先去服务状态面板查看被禁用的原因,如果应用访问量较小出现这种情况,请检查应用中是否存在死循环等bad code。如果访问量过大导致应用被禁用建议更换套餐或添加JVM节点,当然也可以申请企业服务(更高的配额)。 应用start和reload操作时候会被记录配额吗? -------------------------------------------------- 不会,应用在正常运行时才会被记录配额。 应用运行过程中重新上传war服务器是这样的流程? ----------------------------------------------- 应用运行中上传war包会触发reload操作,reload完后新上传的war即能生效。如果期间出现了错误,建议在应用面板重启应用。 调试应用过程中出现OOM怎么办? ---------------------------------- 如果应用出现OOM请到应用管理中重启应用即可,如果频繁出现,则建议扩大应用的内存(更换套餐)或者增加应用节点,当然也可以购买SAE提供的企业服务。 应用出现503怎么办? ------------------------- 应用出现503一般是应用启动过程中出现异常,如果是突发状况可重启服务。仍然无效请到日志中心查看JVM下的日志查找错误原因(有可能是JVM启动时出错)。 为何应用设置的ico不起作用? ------------------------------ 在href前加上应用的contextPath,形如: 出现ban call socket是怎么回事? ------------------------------------- SAE Java环境禁止连接内网,检查你的应用代码是否通过socket连接了不必要的内网地址。 框架问题 ================ SAE Java环境支持哪些框架?需要做特殊的定制吗? ------------------------------------------------- SAE Java环境几乎开放了所有的权限,所以大部分框架(包括SSH、Play等)都能够不做任何修改就在SAE Java环境中运行。 JVM问题 ============== 请参见 :doc:`Java运行环境文档 ` 服务问题 ============== MySQL 的URL、用户名和密码是什么? ----------------------------------- SAE提供的 MySQL 服务为主从分布,其中主库的URL为w.rdc.sae.sina.com.cn,从库的URL为r.rdc.sae.sina.com.cn,端口都是3307。用户名为应用的accessKey,密码为应用的secretKey(在应用管理的汇总信息中查看)。 使用 MySQL 服务一定需要主从分离读写吗? ----------------------------------------- 根据应用需要,如果应用访问数据库量较小,可直接读写主库。不过还是建议你做主从分离的读写。 为什么 MySQL 连接有时候会丢失? ------------------------------------ 因为SAE的 MySQL 服务会将在一定时间内没有任何操作的连接回收,所以请根据实际情况配置你的连接池(如c3p0的idleConnectionTestPeriod和maxIdleTime建议设置为10)。 SAE Java环境支持连接外网 MySQL 吗? -------------------------------------- 支持,但建议使用SAE提供的 MySQL 服务,因为公网网络连接会耗费一定的时间,会影响应用的体验。 MySQL 服务使用的是什么存储引擎?是否支持InnoDB? ---------------------------------------------------- MySQL服务默认使用的是MyISAM引擎。企业用户是支持InnoDB的,如果需要使用InnoDB可发送邮件到 `saemail@sina.cn `_ 申请InnoDB引擎。 使用Memcache时报ServiceNotOpenException是怎么回事? ---------------------------------------------------- Memcache需要现在应用管理中开启才能使用。 使用 Memcache 时报NotInitializeException是怎么回事? -------------------------------------------------------- 在调用 Memcache 操作时,请确保初始化SaeMemcache时调用了init()方法。另外最好基于请求request来调用 Memcache 接口。 使用KVDB时候报ServiceNotOpenException和ServiceIsBanException是怎么回事? ------------------------------------------------------------------------------ 报ServiceNotOpenException请确保你的应用启用了KVDB ,而报ServiceIsBanException则是你的操作过于频繁导致服务被禁用,可以去服务状态面板查看具体哪项配额超配导致禁用。 使用 KVDB 报NotInitializeException是怎么回事? ---------------------------------------------------- 在调用 KVDB 操作时,请确保初始化SaeKV时调用了init()方法。另外最好基于请求request来调用KVDB接口。 使用 FetchURL 服务时候报Author Error是怎么回事? ---------------------------------------------------- 确保你请求的URL没有中文,如果有中文请先将URL的中文转码。 SAE Java提供的SVN可上传哪些文件? ------------------------------------- SAE Java应用提供的SVN仓库支持应用war包和 config.yaml ( cron 配置文件)两种类型文件上传。 可以使用JavaMail来发送邮件吗? -------------------------------- 可以,但是在上传war包前需要将应用中的mail.jar删除,非特殊情况建议用户使用SAE提供的 Mail 服务来发送邮件。 Java应用如何使用 Cron 服务? ------------------------------- Java应用使用 Cron 服务和PHP应用没什么区别。唯一差异的地方就是上传config.yaml文件方式不一样。java应用需要通过SVN将config.yaml文件上传,文件路径和war包路径一致。 应用的所有版本都会运行 Cron 服务吗? ------------------------------------ 请参见 :doc:`Cron文档 ` 资费问题 ============= Java的计费规则是什么? -------------------------- 目前SAE Java应用的计费主要由两部分组成:1,JVM费用;2,流量。 JVM费用主要是指用户租用的JVM实例计费,按照运行的实例数\*实例相应的等级费用/小时,JVM一旦被回收或者手工停止后,将不再产生这部分费用。 流量费用主要是指JVM产生的HTTP对外流量,目前这块计费没有开启。 上述所述的计费价格可以参考资费页面, :doc:`/billing` 。 为什么Java的计费方式和PHP、Python不一样? ------------------------------------------ 主要是因为SAE Java的实现架构和SAE PHP不完全一样,从而导致运行成本也不一样。在SAE Java平台上,各用户独享各自的JVM,我们的计费完全按照JVM instance来进行。 我怎么才能节省费用? ------------------------ 节省费用有以下方式: 1. 在创建应用时,选择合适等级的JVM,比如你的应用规模较小时,可以优先选择经济型的JVM。 2. 可以创建较小数量的JVM,用户的费用和JVM数量成正比。 3. 不用时,可以手动关闭JVM。 4. 当然,用户还可以积极参加SAE举办的各种活动,获得云豆支持。 JVM被回收后如何被唤醒?唤醒需要多长时间? ------------------------------------------- 长期没被访问的应用会被回收,当请求再次来到的时候会将JVM唤醒,唤醒操作时间根据应用启动时间而定,通常情况下在30秒之内。