• 关于

    开启多个tomcat服务器配置

    的搜索结果

问题

ecs服务器能怎么同时运行多个tomcat

ecs服务器 不能同时开启多个tomcat服务是怎么回事   我新租了ecs 刚开始的时候可以开启2个tomcat 但是我续费之后,突然就不能开启2个了,只能开一个,配置什么都没变,总...
henghengsxh 2019-12-01 22:03:29 1522 浏览量 回答数 1

回答

当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port、NodeIP:NodePort和域名访问等。Kubernetes集群默认不支持HTTPS访问,如果用户希望能够通过HTTPS进行应用的访问,容器服务和阿里云负载均衡服务为您提供安全的HTTPS访问。本文旨在通过实际案例演示的HTTPS访问配置,帮助用户在容器服务Kubernetes中配置自己的证书。 前提条件 您已创建一个Kubernetes集群,参见创建Kubernetes集群。 您已经通过SSH连接到Master节点,参见SSH 访问 Kubernetes 集群。 连接到Master节点后,创建集群的服务器证书,包括公钥证书和私钥。您可通过以下命令快速创建。 $ openssl genrsa -out tls.key 2048 Generating RSA private key, 2048 bit long modulus ................................................................+++ ........................................................................................+++ e is 65537 (0x10001) $ openssl req -sha256 -new -x509 -days 365 -key tls.key -out tls.crt You are about to be asked to enter information that will be incorporated ... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:zhejiang Locality Name (eg, city) [Default City]:hangzhou Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:foo.bar.com #注意,您需要正确配置域名。 Email Address []:a@alibaba.com 背景信息 根据访问的方式不同,当前可以分为两种配置证书的方式: 在前端SLB上配置证书 在Ingress中配置证书 在SLB上配置HTTPS证书 该方式有如下特点: 优点: 证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。 缺点:需要维护较多的域名与IP地址的对应关系。 适用场景:应用不使用Ingress暴露访问方式,通过LoadBalancer类型的Service进行应用访问的暴露。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用采用LoadBalancer类型的服务(service)对外提供访问。参见创建服务。 示例 登录容器服务管理控制台。 单击左侧导航栏中路由与负载均衡 > 服务,选择所需集群和命名空间,查看预先创建的tomcat示例应用。如下图所示创建的tomcat应用名称为tomcat,服务名称为tomcat-svc。其中,服务类型为LoadBalancer,暴露的服务端口为8080。 路由与负载均衡 单击外部端点,您可通过IP:Port的方式访问tomcat应用。 外部端点 登录负载均衡管理控制台。 在控制台左侧导航栏,选择实例 > 实例管理,在服务地址栏中,找到与tomcat-svc服务外部端点对应的负载均衡实例,单击操作列中的监听配置向导。 开始进行负载均衡配置,首先进行配置监听协议。选择HTTPS协议,监听端口设置为443,然后单击下一步。 配置SSL证书。 首先单击新建服务器证书。 新建服务器证书 在弹出的创建证书页面中,选择证书来源。本例中选择上传第三方签发证书,然后单击下一步。 在上传第三方签发证书页面中,配置证书名称,选择证书部署区域,然后在公钥证书和私钥栏中输入您创建的服务器公钥证书和私钥,最后单击确定。 公钥证书 然后在选择服务器证书栏选择刚创建的服务器证书。 单击下一步。 配置后端服务器,默认情况下已添加服务器,您需要配置后端服务器端口,用于监听tomcat-svc服务,最后单击下一步。 说明 您需要在容器服务Web界面找到该服务对应的NodePort,并在后端服务器端口中配置该端口。 配置健康检查,然后单击下一步。本例中采用默认配置。 进行配置审核,确认配置正确后,单击提交。 配置成功后,单击确定。 返回实例管理页面,您查看该实例,HTTPS:443监听规则已经生成。 访问HTTPS的tomcat应用,在浏览器中输入https://slb_ip并进行访问。 说明 如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。 实例管理 在Ingress上配置证书 该方法有以下特点: 优点:无需改动SLB的配置。每一个应用都可以通过Ingress管理自己的证书,互不干扰。 适用场景:每个应用都需要单独的证书进行访问,或者集群中存在需要证书才能访问的应用。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。 示例 登录到Kubernetes集群的Master节点,根据准备好的证书创建secret。 说明 在这里需要正确配置域名,否则后续通过HTTPS访问会有问题。 kubectl create secret tls secret-https --key tls.key --cert tls.crt 登录容器服务管理控制台。 在左侧导航栏中,选择路由与负载均衡 > 路由,选择所需的集群和命名空间,单击右上角创建。 可选: 在创建路由对话框中,配置可HTTPS访问的路由,完成后单击确定。 更多详细的路由配置信息,请参见通过界面创建路由(Ingress)。本例中进行如下配置。 名称:输入该路由的名称。 域名:即是前面配置的正确域名,与ssl证书中配置的保持一致。 服务:选择tomcat应用对应的service,端口为8080。 开启TLS:开启TLS后,选择已创建的secret。 配置证书 您也可采用yaml文件的方式创建路由(Ingress),本例对应的yaml示例文件如下: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-https spec: tls: hosts: foo.bar.com secretName: secret-https rules: host: foo.bar.com http: paths: path: / backend: serviceName: tomcat-svc servicePort: 8080 返回路由列表,查看创建的路由(Ingress),本例中域名为foo.bar.com,并查看端点和域名,您也可进入路由详情页进行查看。 说明 本例中以foo.bar.com作为测试域名,您需要在hosts文件中创建一条记录。 47.110.119.203 foo.bar.com #其中IP地址即是路由的端点。 路由列表 在浏览器中访问https://foo.bar.com。 说明 由于创建了TLS证书访问,所以要用HTTPS来进行域名访问,针对该应用,本例以foo.bar.com为示例,在本地进行解析。在具体使用场景中,请使用备案过的域名。 路由访问
1934890530796658 2020-03-31 15:46:05 0 浏览量 回答数 0

问题

什么是云服务器 ECS Linux Web 环境添加站点

云服务器 ECS Linux 系统通过 Tomcat 添加站点云服务器 ECS Linux 系统通过 Apache 添加站点 云服务器 ECS Linux 系统通过 Tomcat 添加站点 说明:本章节提到的配置路...
boxti 2019-12-01 21:54:57 1520 浏览量 回答数 0

回答

详细信息 Linux系统的ECS实例中添加Tomcat站点 提示:本文的配置路径以如下云市场的阿里云linux一键安装web环境链接为例,如果您在自定义环境下添加Tomcat站点,请根据实际安装路径进行配置。 https://market.aliyun.com/products/56014009/cmgj000262.html 执行如下命令,进入绑定域名所在目录,找到配置文件。 cd /alidata/server/nginx/conf/vhosts/ 执行如下命令,拷贝文件。 cp test.conf new.conf 执行如下命令,单击键盘上的 i,编辑文件。 vim new.conf 添加如下配置。 listen 80 default; server_name www.XXX.com ; # 绑定的网站域名 index index.html index.htm index.jsp; # 设置默认首页 root /alidata/www/webb/; # 指定网站的目录,需要和 TomCat 设置的一致 location ~ .php$ { proxy_pass http://127.0.0.1:8080; } location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ ..(js|css)?$ { expires 1h; } access_log /alidata/log/nginx/access/default.log; } 单击键盘上的 Esc,退出编辑模式,然后保存退出。 执行如下命令, 重启Nginx。 /alidata/server/nginx/sbin/ngins -s restart 进入/alidata/server/tomcat7/conf/目录,修改server.xml文件。 单击 shift 和 g,跳转至页面底部,大约在124行。将 Host name=“localhost" 中的 “localhost” 修改为目标域名,使用docBase参数指定Web根目录,同时添加一组host,然后保存退出。 提示:docbase参数指定的Web根目录需要与Nginx配置保持一致。当您只配置一个站点的时候,无须设置docBase,设置多个站点的时候需要分别指定Web根目录。 执行如下命令,重启Tomcat。 restart Tomcat 在浏览器中输入网站域名,确认访问成功。 Linux系统的ECS实例中添加Apache站点 Apache的配置文件一般在/etc/httpd/conf目录下,httpd.conf是Apache的主配置文件,当您进行配置时,可以将虚拟主机的配置文件单独配置,如取名为vhost.conf。然后在http.conf中加入“Include /etc/httpd/conf/vhost.conf”,即可包含vhost.conf的配置文件。 提示:如果您在自定义环境下添加Apache站点,请根据实际安装路径进行配置。 基于IP地址 适用场景 适用于一台服务器有多个IP地址的情况。 提示:目前阿里云的云服务器 ECS只允许绑定一个公网IP地址和一个私网IP地址,故此方法不适用。 基于端口号 适用场景 适用于利用不同的端口识别不同的网站的情况。 适用于网站域名短缺但服务器的端口号充足的情况。 具体实现 访问站点时,使用网址加端口号的方式实现。配置该方式后需要在网站域名末尾加上端口号来访问不同的网站。如下所示。 http://port.XXX.cn:80 http://port.XXX.cn:81 http://port.XXX.cn:82 提示:此方式存在缺点,网站后需要加上端口号,不利于用户访问。 基于主机名 适用场景 适用于多个网站运行在一台服务器上的情况。 具体实现 使用不同的域名来区分不同的网站,所有的域名解析都指向同一个IP地址。Apache通过在HTTP头中附带的host参数来判断用户需要访问哪一个网站。如下所示。 http://test1.XXX.cn http://test2.XXX.cn http://test3.XXX.cn 实例讲解 以CentOS 6.5系统为例,为您详细说明如何配置基于主机名的Apache虚拟主机。 开启Apache的vhost模块。在http.conf配置文件中,找到如下信息,删除前面的“#”号,并开启vhost模块。 #LoadModule vhost_alias_module modules/mod_vhost_alias.so 在Apache的配置文件夹下新建vhost.conf文件,用以作为虚拟主机的配置文件。 编写虚拟主机的内容,先加入默认的文件头。 NameVirtualHost *:80 ServerName * DocumentRoot /www/html # 为默认情况下网站的目录 根据实际情况添加以下的配置。 在任意地址上,监听80端口上的HTTP请求。 ServerAdmin test@huigher.cn #网站管理员的联系方式? DocumentRoot "/var/www/html/test1" #网站的目录 ServerName test1.huigher.cn #主机名,apache就是通过这个地址来识别不同的网站 ErrorLog "logs/test1.huigher.cn-error_log" #错误日志路径 CustomLog "logs/test1.huigher.cn-access_log" common #访问日志路径 如果访问报错提示403,主要是由于访问的目录没有权限所致,需要添加以下代码。 <Directory /var/www/html/test1> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all 服务器上有多少个网站,就分别配置多少份以上信息,并根据实际情况修改其中的内容。在服务器的页面配置类似如下。 在http.conf文件中加入如下配置,包含vhost.conf文件内容。 Include /etc/httpd/conf/vhost.conf 在/etc/hosts文件中,将网站的域名绑定到本地环回地址,如下所示。 127.0.0.1 test1.XXX.cn 127.0.0.1 test2.XXX.cn 127.0.0.1 test3.XXX.cn 执行如下命令,重新加载配置文件。 service httpd reload 注:或者执行如下命令,重启Apache进程。 service httpd restart 进行测试,确认访问不同的域名,返回不同的网站内容。
KB小秘书 2019-12-02 02:06:56 0 浏览量 回答数 0

回答

引用来自“乌龟壳”的评论你在java端还是ng端做的https? 恩,老年人的话,可能会使用tomcat来做HTTPS,这就尴尬了######会心一笑######毫无疑问,你配置错了。实践证明,HTTPS的性能损失在10%~30%之间。######哪有那么夸张,我试过换http2,性能几乎无影响,而且有些页面元素多的反而加载速度有提升,得益于http2的并行资源请求。######你在java端还是ng端做的https?###### 引用来自“乌龟壳”的评论你在java端还是ng端做的https? 引用来自“风筝上的少年”的评论恩,老年人的话,可能会使用tomcat来做HTTPS,这就尴尬了 啊?tomcat不能吗######java低版本的ssl相关的算法性能很差,好像1.8用了新的算法。######效率太低###### 据我了解, 请求进来是https到nginx,然后反向代理到内网的http... 原有的应用不需要改动... ######我也这样用。###### 反向代理,一直听说,就是不懂,后来一看百科,就是个前端的gate,负责转发http中转的角色。######https我通过nginx来转发,参考红薯的文章,nginx--tomcat使用http,nginx开启了http2,但是性能损失还是很大,主要是http2的开启才有所提升,那你们用什么服务器?######ssl_session_cache 配上试试######你具体什么配置,单机qps多少?我这边就是公司阿里云的服务器######回复 @old菜鸟 : 那就是你真的机器配置太差。反正我这玩了很多次了,性能损失不超过30%,绝没有你说的接近60%那么夸张######设置的5m,没什么差别######快捷运维-https如何快速获得ssllabs的A评级 http://bbs.aqzt.com/thread-146-1-1.html (出处: 安全专题 -  www.aqzt.com  - 最棒的安全运维与开源架构技术交流社区!) 参考这个配置 ######肯定用nginx 做反向代理啊 ssl杠杠的,不会有什么太大性能损耗
kun坤 2020-05-29 16:28:16 0 浏览量 回答数 0

问题

ECSwindows服务器tomcat环境配置必看教程

linux服务器tomcat配置: https://bbs.aliyun.com/read/302895.html?spm=5176.bbsl207.0.0.sitw0o 第一步:根据自己的系统环境...
我的中国 2019-12-01 21:34:04 11146 浏览量 回答数 6

回答

报错信息 HSFServiceAddressNotFoundException 未找到需要调用的服务目标地址。 描述信息 需要调用的目标服务为:xxxx; 组别为:xxxx。 基本问题排查 服务本身的发布、调用是否正确。 验证服务是否发布:在对应环境(日常、预发或线上环境)的 “服务治理”控制台查询需要的服务。 名称不匹配,检查代码中对应发布者和消费者 XML 配置的 interface、version、group,3个数据要完全一致(注意大小写也要一样, 同时要注意前后不能有空格)。 服务提供者防火墙开启或网络不通,telnet 服务提供者 IP HSF 端口(默认12200)是否可以正常连接,如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 是否存在多网卡,如果存在多网卡可以使用 -Dhsf.server.ip 来指定服务端的 IP。 本地开发环境可以直接 jvm 启动参数设定。 生产环境需要跟开发联系确定如何解决。 服务调用太快,在 ConfigServer 将地址推送过来之前就发起调用导致出错。在服务消费者的配置项里添加 maxWaitTimeForCsAddress 的相关配置,请参考开发服务消费者。 本地开发环境排查 本地使用轻量配置中心进行开发时,服务发布、订阅均无需鉴权,故服务正常启动就可以注册、订阅成功。在排除掉前面的基本问题后,可以按照如下步骤进行排查。 轻量配置中心检查。 登录轻量配置中心控制台,搜索对应的服务是否已经发布成功,服务提供者的 IP、端口是否正确。如果服务未发布成功,按照下方《服务提供者排查》步骤进行排查。 搜索对应的服务是否已经订阅成功。如果服务未订阅成功 《服务消费者排查》 步骤进行排查。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。 服务提供者排查。 如果轻量配置中心控制台发现服务未能发布成功,请进行如下排查。 ping jmenv.tbsite.net 确定地址服务器 IP 跟轻量配置中心 IP 一致。 清空/{userhome}/logs/下所有日志,清空/{userhome}/configclient/目录。 启动服务提供者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 Tomcat 启动日志,无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看/{userhome}/configclient/logs/configclient.log 或/{userhome}/logs/configclient/configclient.log(不同版本稍有区别),查找 Connecting to remoting://{IP 地址}连接的注册中心 IP 跟轻量配置中心 IP 一致,如果不一致,请确认轻量配置中心是否通过 -Daddress.server.ip={可以访问的 IP}调整过 IP。 其中对应服务[Register-ok][Publish-ok],确定服务名、版本、分组都是预期的信息。 如果[Register-ok][Publish-ok],说明服务提供者正常注册到服务注册中心。开发环境只要启动成功就可以注册成功。 说明 在实际开发过程中机器上可能会同时启动多个服务提供者,例如A,B,C;每个服务提供者对外提供的hsf端口会在12200基础上依次累加。同时可以通过在jvm参数上指定ip和端口:-Dhsf.server.ip= -Dhsf.server.port= 在轻量配置中心上可以检查服务端端口与实际启动的端口是否一致,不一致会导致消费端调用失败,可以通过轻量配置中心控制台更新服务端端口,或者删除掉服务,然后重新发布应用。 服务消费者排查。 ping jmenv.tbsite.net 确定地址服务器 IP 跟轻量配置中心 IP 一致。 启动服务消费者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 Tomcat 启动日志,无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看 /{userhome}/configclient/logs/configclient.log 或 /{userhome}/logs/configclient/configclient.log(不同版本稍有区别),查找 Connecting to remoting://{IP 地址}连接的注册中心 IP 跟轻量配置中心 IP 一致,如果不一致,请确认轻量配置中心是否通过 -Daddress.server.ip={可以访问的 IP} 调整过 IP。 查看日志中对应的服务订阅情况,[Data-received] 是否收到服务提供者的具体信息。如果未收到服务提供者数据,需要确定服务提供者服务已经注册成功。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 线上环境排查 使用 EDAS 管理和部署的应用都是使用的正式环境,正式环境存在严格的服务鉴权和数据隔离。由于存在鉴权,正式环境不同主账号之间的服务无法直接互相调用,同时开发环境也无法调用访问正式环境的服务。 服务提供者排查。 id="codeph_hor_1ki_a0p">cat /home/admin/{taobao-tomcat 目录}/bin/setenv.sh 此文件中 -Daddress.server.domain={地址服务器域名} 对应地址服务器域名。 ping {地址服务器域名} 查看返回的 IP,是否正常。如果不能 ping 通说明网络存在问题,请排查网络。 清空/home/admin/logs/下所有日志,清空/home/admin/configclient/目录,清空/home/admin/{taobao-tomcat 目录}/logs/目录。 启动服务提供者应用,如果之前 Tomcat 已经启动,请重启。 首先查看/home/admin/{taobao-tomcat 目录}/logs/catalina.out,此文件中无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看/home/admin/{taobao-tomcat 目录}/logs/localhost-{日期}.log,此文件中无异常信息。。如果有异常,请解决异常。 查看/home/admin/configclient/logs/configclient.log 或/home/admin/logs/configclient/configclient.log(不同版本稍有区别),其中对应服务[Register-ok][Publish-ok],确定服务名、版本、分组都是预期的信息。如果[Publish or unregister error],请排查。 查看 catalina.out 日志中 edas.hsf.xxxx 格式的版本。 低于 edas.hsf.2114.1.0,必须创建对应服务分组,否则会鉴权失败。登录 EDAS 控制台,在左侧导航栏选择服务市场 > 服务分组查看应用的服务分组是否已经创建。 大于或等于 edas.hsf.2114.1.0,已经提供多租户方式隔离,可以不需要创建服务分组。对应服务会注册2次,一次是基于租户注册(总是成功),一次是基于分组注册(可能失败,但不影响服务调用)。 2018-07-19 10:28:44.716|ERROR|[] [] [%s] [Publish or unregister error] spas-authentication-failed! dataId:com.alibaba.edas.testcase.api.TestCase:1.0.0 group:test erorr:java.lang.Error: A receivedRevision:2 tenant:DEFAULT_TENANT 2018-07-19 10:28:44.717|INFO|[] [] [] [Register-ok] Publisher (HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2 for com.alibaba.edas.testcase.api.TestCase:1.0.0)Tenant:0846c173-decf-4b47-xxxxxxxx in group test in env default 2018-07-19 10:28:44.717|INFO|[] [] [] [Publish-ok] dataId=com.alibaba.edas.testcase.api.TestCase:1.0.0, clientId=HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2, datumId=ecu:ed5b9d2b-a276-4ad7-b7b9-14e432ff2356:192.168.0.1,tenant=0846c173-decf-4b47-xxxxxxxx, rev=2, env=default 上述 ERROR 级别日志中:使用tenant:DEFAULT_TENANT鉴权失败;使用tenant=0846c173-decf-4b47-xxxxxxxx发布成功。只需保证两套鉴权成功一次即可。 如果[Register-ok][Publish-ok],说明服务提供者正常注册到服务注册中心。 服务消费者排查。 cat /home/admin/{taobao-tomcat 目录}/bin/setenv.sh 此文件中 -Daddress.server.domain={地址服务器域名} 对应地址服务器域名。 ping {地址服务器域名} 查看返回的 IP,是否正常。如果不能 ping 通说明网络存在问题,请排查网络。 清空 /home/admin/logs/下所有日志,清空 /home/admin/configclient/目录,清空 /home/admin/{taobao-tomcat 目录}/logs/目录 启动服务消费者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 /home/admin/{taobao-tomcat 目录}/logs/catalina.out,此文件中无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看 /home/admin/{taobao-tomcat 目录}/logs/localhost-{日期}.log,此文件中无异常信息。如果有异常,请解决异常。 查看 /home/admin/configclient/logs/configclient.log 或 /home/admin/logs/configclient/configclient.log(不同版本稍有区别,查看日志中对应的服务订阅情况,搜索对应服务,查看[Data-received]是否收到服务提供者的具体信息。如果未收到服务提供者数据,需要确定服务提供者服务已经注册成功。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 相关日志排查 查看/home/admin/configclient/snapshot/DEFAULT_ENV/ 可以查到消费端服务订阅到的实际服务列表数据信息如下: [root@iZ2ze26awga24ijh93152dZ com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0]# cat HSF-0846c173-decf-4b47-8aa0-xxxxxx.dat [ "192.168.0.1:12200?_p\u003dhessian2\u0026_ENV\u003dDEFAULT\u0026v\u003d2.0\u0026_TIMEOUT\u003d3000\u0026_ih2\u003dy\u0026_TID\u003d0846c173-decf-4b47-8aa0-04b5a5610096\u0026_SERIALIZETYPE\u003dhessian\u0026_auth\u003dy" ] /home/admin/logs/hsf/hsf.log 可以查看服务调用报错信息。 /home/admin/logs/hsf/hsf-remoting.log 记录消费端与服务端心跳检查日志,若出现如下日志: 01 2018-06-20 12:35:00.797 ERROR [HSF-Worker-2-thread-1:hsf.remoting] [] [] [HSF-0085] [remoting] fail to connect: /192.168.1.1:12200 in timeout: 4000 该日志为消费端与提供端无法建立 TCP 长连接。 检查对应的机器 IP 上的服务正常启动,对应的端口已经处于监听状态(例如 12200)。 2. 第一步没有问题,可以尝试在消费端 telnet 服务端 IP Port,检查端口是否未开放。
保持可爱mmm 2020-03-28 22:11:46 0 浏览量 回答数 0

回答

这个问题特别的简单   只需要你从nginx拦截  *.js *.html *.png *.jpg *.css 这些静态资源  然后你把动态的资源全部甩到后端的动态服务器######回复 @一个搞IT的人 : 肯定是用nginx拦截静态资源了,tomcat处理静态资源会很慢的,直接从nginx过滤就好了,先让nginx检测是不是静态资源,如果是的话用nginx 处理 其他的全部转到tomcat处理######先全局拦截,后匹配拦截?先后顺序有影响吗?######你说的关于gzip压缩的问题 你可以从nginx 上做gzip压缩  交给nginx压缩比交给tomcat压缩更合适######恩,是的。都是在nginx中配置开启gzip######然后关于集群的问题就更简单了 你从nginx 的  upstream  tomcatserver  {             server   127.0.0.1:8080;             server   127.0.0.1:8080;  }配置多个  然后 还可以设置权重跟主备用 这个你可以看一下nginx的文档 ###### #运行用户 user root; #启动进程,通常设置为cpu核心数相等 worker_processes 1; #全局错误日志和PID文件 error_log logs/error.log; pid logs/nginx.pid; #工作模式及连接上线 events{ #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 use epoll; #单个后台worker process进程的最大并发链接数 worker_connections 1024; } #设定http服务器 http{ #设定MIME类型 include /usr/local/nginx/conf/mime.types; default_type application/octet-stream; #设定access Log access_log logs/access.log; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #连接超时时间 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #设定请求缓冲 client_header_buffer_size 1k; large_client_header_buffers 4 4k; #设定负载均衡的服务器列表 upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 #本机上的Squid开启3128端口 #server 192.168.8.1:3128 weight=5; #server 192.168.8.2:80 weight=1; #server 192.168.8.3:80 weight=6; server localhost:8080 weight=5; } server{ #监听端口 listen 80; #主机名 server_name www.dc.com; #设定本虚拟主机访问日志 # access logs/access.log main; #默认请求 location / { proxy_pass http://localhost:8080; index index.jsp index.html index.ftl; include proxy.conf; } #静态文件 Nginx 自己处理 location ~ ^/(img|images|javascript|js|css|flash|media|static)/{ root /home/web/resources; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。 expires 1h; } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html{ root html; } #脚本文件 交给后端处理 #location ~ \.jsp${ # proxy_passs http://localhost:8080; #} #设定查看Nginx状态的地址 #location /NginxStatus { #stub_status on; #access_log on; #auth_basic "NginxStatus"; #auth_basic_user_file conf/htpasswd; #} } } 我是根据 js、img、css的不同路径进行处理的,集群哪里用的是upstream tomcatserver###### @一个搞IT的人 你细心找找有好多,我也是在osc上找到的:)######谢谢,谢谢。。。有代码真好!!###### @前路 @...... 正解,简单说:先分别将多个tomcat启动在不同的端口(非80端口)下面,然后在nginx中配置upstream指向这些tomcat,最后通过location+正则使nginx接管所有静态资源请求即可###### JFinal就是java项目,所以集群肯定是没有问题的,具体怎么配置,网上可以找找资料 ######谢谢,正在网上找。
kun坤 2020-05-29 13:10:26 0 浏览量 回答数 0

回答

Linux下如何进行FTP设置  ECSLinux服务器如何配置网站以及绑定域名  Ubuntu安装vncserver实现图形化访问  阿里云Docker镜像库  ECSlinux中添加ftp用户,并设置相应的权限  CentOS6.5安装vncserver实现图形化访问  LinuxSCP命令复制传输文件的用法  Mysql,phpmyadmin密码忘了怎么  Linux下l2tp客户端xl2tpd的安装配置  使用SFTP方式传输文件  ECSLinux系统盘网站数据更换至数据盘  WDCP的报错处理  Linux中PHP如何安装curl扩展方法  修改Linux服务器的ssh端口  ECSLinux配置vnc文档  运维分享--阿里云linux系统mysql密码修改脚本  20步打造最安全的NginxWeb服务器  SSH配置存在问题,导致登录和传输数据很慢  ECSLinux下如何查看定位当前正在运行的Nginx的配置文件  ECS服务器CentOS系统如何开放端口  查看Linux下默认的DNS  FTP主动被动模式配置混乱导致无法登录  linux环境配置phpmyadmin  ECSLinux系统下VSFTP配置的FTP上传文件报错“553Couldnotcreatefile”  ECSLinuxMysql启动提示Toomanyarguments(firstextrais'start')  运维分享--阿里云linux系统ssh远程连接检查脚本  ECSLinux系统授权mysql外网访问  ECSLinux服务器nginx禁止空主机头配置  ECSLinux服务器通过FTP无法查看到.htaccess文件  ECSLinux服务器下Mysql自动备份脚本的使用方法  ECS-linux授权mysql外网访问  用date命令修改Linux系统的时间为什么无效  运维分享--阿里云linux系统web日志分析脚本  ECSLinux服务器messagebus默认关闭导致安装桌面环境后无法正常使用  ECSNginx+php中php-fpm参数配置  运维分享--阿里云linux系统mysql连接检查脚本  iptables的conntrack表满了导致访问网站很慢  运维分享--阿里云linux系统带宽监测脚本  如何调整目录文件的拥有者和拥有组  yum操作报错处理  ECSLinux配置vsftpd限制FTP账户访问其它目录  vsftp报错:500OOPS:vsftpd:cannotlocateuserspecifiedin'ftp_username':ftp  Linux主机系统目录误操作权限修改为777修复方法  ECSNginx中https的配置说明  运维分享--阿里云linux系统负载状态检查脚本  ECSLinux服务器AMH云主机面板启动、关闭操作  ECSLinux服务器关闭磁盘自检  ECSLinux配置key认证登录后因为相关文件权限错误导致连接失败-Connectionclosedbyforeignhost  ECSLinux系统服务器解决ssh反向代理监听ip错误问题  ECSLinux设置定时任务crontab  ECSGentoo系统中mirrorselect获取内容失败提示Nameorservicenotknown  ECSLinux系统服务器ping域名返回Unknownhost报错  IIS、Nginx或Apache访问日志存在182.92.12.0/24段访问记录  Nginx日志的解释  ECSLinux系统wget下载文件  ECSLinux服务器内部无法解析域名  ECS路由表错误导致无法ping通  ECSLinux主机修改主机名  wordpress插件oss4wpurl无法访问  ECSLinux查看隐藏文件  Linux系统服务器解决vsftp服务使用root登录失败  ECSLinuxPPTP客户端登陆后获取地址错误  Linux系统服务器解决内外双网卡均显示内网IP地址问题  ECSLinux系统NetworkManager导致网络异常  外部PingECSLinux丢包严重  ECSLinux检查Nginx配置文件  ECSLinux系统判断当前运行的Apache所使用的配置文件  Apache访问日志的说明  ECSLinux.htacess文件上传无法显示  linux服务器内无法访问其他站点的检查处理方法  ECSmysql无法启动报错Can'tcreate/writetofile'/tmp/ibfguTtC  ECSLiunx系统服务器执行ls查询命令提示bash:ls:commandnotfound  Linux为何执行命令会执行历史命令  ECSLinux系统如何检查系统上一次重启的时间  ECSLinux下MySQL排查基本步骤  Linux系统如何查看mysql版本号  MySQL中查看慢SQL的日志文件方法  phpMyAdmin修改配置可以上传大文件  openSUSE下开机自动运行脚本命令的方法  给Linux系统添加一个回收站  ECSLinux分区异常无法挂载  ECSLinux上安装Cloudfs启动失败提示找不到库文件libunwind.so.8  ECSLinux清理/tmp目录下的文件原理  Liunx系统服务器通过prefork模块限制apache进程数量  ECSCentOS6.5系统下Apache配置https服务  Noinputfilespecified的解决方法  Apache、Nginx支持跨域访问  Apache环境下配置404错误页方法  ECSLinux通过修改Apache配置301重定向的方法  ECSLinux主机无法互访处理  ECSlinux服务器启用了TRACEMethod.怎么关闭  Apache运行参考的调整优化  ECSApache如何关闭目录访问  ECS服务器隐藏apache版本信息  ECSLinux判断HTTP端口监听状态的方法  ECSLinuxApache限制客户端访问网站的速度  负载均衡+ECS站点虚拟子目录的设置案例  ECS网站访问504错误分析  为何Ubuntu开启UFW后,VPC下的SNAT转发就失效了  ECSDebian自定义镜像启动无法SSH  ECSLinux云服务器如何确认文件系统只读?  ECSLinux创建文件报错Read-onlyfilesystem  恢复ext4文件系统中使用rm命令误删除的文件  ECSLinux删除乱码文件的方法  net.ipv4.tcp_fin_timeout修改导致的TCP链接异常排查  ECSLinux执行sh脚本提示Nosuchfileordirectory  /var/log/message日志报错  通过sshtunnel连接内网ECS和RDS  CentOS7中MySQL服务启动失败的解决思路  ECSLinux系统启动提示“Giverootpasswordformaintenance”  结束云盾客户端进程后如何启用  Ubuntu服务器中配置AWStats  CentOS6非root用户使用sftp服务  ssh避免客户端长久未操作导致连接中断  删除binglog导致mysql无法启动  ECSLinux服务器修改SSH端口号不生效的检查方法  ftp传输失败问题解决方法  ECSLinux下使用extundelete恢复被误删的文件  ECSLinux基于nginx环境通过.htaccess配置rewrite伪静态示例  ECSLinux系统利用openssl生成强密码  ECSCentOS6配置PPTPVPN  Last命令关于reboot记录的含义  Ubuntu修改运行级别的总结  ECSCentOS6系统PPTPVPN脚本  ECSLinux系统如何配置gentoo的源  ECSCentOS系统配置VPN客户端  多域名跳转——不同域名指向不同子目录  Centos配置PPTPVPN后无法打开网页  mysql不能远程连接  ECSLinux系统修改文件或目录权限方法  ECSWDCP破解mysql以及wdcp后台管理密码  ECSLinux系统如何设置SSH白名单  EcsLinux系统一键安装web环境下tomcat添加站点方法  Centos7安装vnc  Setuptools软件包版本太老导致ECSLinux安装AliyunCLI出错  Apache配置二级域名  ECSlinux重启丢失分区表  Linux系统服务器安装使用sar工具获取系统运行状态方式  ECSUbuntu开启sftp连接  linux系统mysql跳过密码登陆操作登陆设置  mysql报错LostconnectiontoMySQLserverat'readinginitialcommunicationpacket'  Ubuntuapt-get安装提errorprocessingpackageinstall-info(--configure)  Nodejs的版本升级和使用  Nodejs连接RDSMySQL数据库  ECS公共镜像Ubuntu,Centos的内核版本查看方法  ECSLinux服务器修改时区  Apache禁止未经许可的域名访问ECS上的网站  ECSLinux如何隐藏文件和文件夹  ECSmysql.sock丢失问题解决方法  ECSLinux云服务器centos将系统时区从UTC时间改为CST  ECSLinux云服务器权限问题说明  ECSLinux系统盘数据转移方法  Linux下忘记mysql的root密码  ECSMySQL编译安装支持innodb引擎  ECSLinuxNAT哈希表满导致服务器丢包  ECSLinux服务器重启后mount出错的解决方法  Centos6.5添加IPv6支持  ECSubuntu系统修改DNS/etc/resolv.conf无法保存  ECSLinux如何增加虚拟内存swap  ECSLinuxtraceroute使用方法  ECSLinux系统磁盘再次挂载报错没有有效的分区表  如何删除yum的缓存信息  ECSLinux服务器yum的查询功能  centos6怎么使用RPMForge软件源仓库  ECSLinux服务器Nginxrewrite示例  ECSLinuxCentOS6ssh连上就断掉并报错“fatal:mm_request_send:write:Brokenpipe”  mysql上传报错#1064-YouhaveanerrorinyourSQLsyntax  EcsLinux中rpm安装文件命令常用选项  ECSLinux系统kjournald进程占用io资源高的解决方法  ECSLinux如果通过i节点删除无法删除的文件  ECSLinux基于zabbix搭建企业级监控平台  ECSLinux系统yum卸载重装  ECSCentOS6.5OpenVPN配置  ECSLinux使用SFTP登陆时报错:Receivedunexpectedend-of-filefromSFTPserver  ECSLinux如何增加数据盘iNode数量  ECSLinux查看目录没有颜色  ECSLinux系统tmp目录的安全设置  ECSLinux下shm设备的安全设定  ECSCentOS多线程下载工具Axel使用说明  ECSLinuxcurl使用证书访问HTTPS站点  Linux系统中vsftp用户无法登陆的相关说明  Nginx配置文件中rewrite指令标志位的说明与使用  ECSLinux中ss命令显示连接状态的使用说明  ECSLinux系统没有程序运行通过top观察发现cpu很空闲  Linux下的文件权限检查和修改  ECSLinux云服务器利用chatter命令锁定系统重要文件  ECSCentos7安装OpenVPN  ECS上搭建反向代理通过内网访问OSS服务  ECSLinux下的script命令记录用户操作行为  Ubuntu下使用slay命令结束某个用户的所有进程  Nginx配置文件中root与alias指令的区别  Nginx配置文件中rewrite指令的使用  ECSLinux如何修改PATH变量  Centos安装桌面后在远程终端管理里面无法使用键盘和鼠标  ECSLinux下Apache忽略网站URL的大小写的方法  ECSLinux服务器利用Nethogs监控每个进程的网络使用情况  ECSapt-get安装软件或更新时提示apt-get的Segmentationfaultsts  ubuntu开机出现memtest86,重启也无法取消的原因  Linux下History命令显示操作时间,用户和登录IP  ECSLinux服务器使用htop监控负载 “答案来源于网络,供您参考” 希望以上信息可以帮到您!
牧明 2019-12-02 02:16:20 0 浏览量 回答数 0

回答

下表介绍了Web+自2019年6月14日公测上线以来的迭代版本的重要功能说明以及相关文档链接。 2020-02-06 功能名称 功能描述 功能类型 相关文档 一键部署WordPress应用 可以在控制台上一键部署WordPress应用程序,默认使用单机部署的MySQL数据库,降低启动成本。 新增 一键启动WordPress 支持编排Redis资源 可以在控制台界面上直接添加和配置Redis资源。 新增 云数据库Redis 开放Nginx配置文件的编辑功能 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 反向代理服务器 免费的OSS存储空间 在创建应用的时候可以选择使用由系统提供的免费OSS存储空间。 优化 / 2019-12-05 功能名称 功能描述 功能类型 相关文档 支持域名托管 支持托管阿里云云解析和任何第三方域名服务提供商处注册的域名。 新增 域名托管 支持分批部署 当部署环境有多台实例的时候,支持按照指定规则进行分批部署,以保证业务不中断。 新增 部署环境 各开发语言的交互式教程 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 / 开通向导优化 支持一键开通及授权相关产品。 优化 开通Web+相关服务并授权 部署环境配置界面优化 以架构图的方式展现环境配置信息,并可以进行编辑操作。 优化 / 支持禁用健康检查 部署环境默认禁用健康检查,您可以在环境配置界面选择手动开启。 优化 配置健康检查 2019-09-29 功能名称 功能描述 功能类型 相关文档 代购ECS实例 支持使用控制台和CLI代购包年包月的ECS实例。 新增 ECS实例 代购SLB实例 支持使用CLI代购包年包月SLB实例。 新增 使用CLI配置SLB 代购RDS实例 支持使用CLI代购包年包月RDS实例。 新增 使用CLI配置RDS 支持HTTPS访问 可以在SLB和反向代理层配置证书实现HTTPS访问。 新增 为部署环境配置HTTPS 2019-09-25 功能名称 功能描述 功能类型 相关文档 正式商用 正式商用后Web+仍然免费,您只需要对用到的底层资源付费。 新增 / 2019-09-04 功能名称 功能描述 功能类型 相关文档 支持导入已购买的ECS实例 您在ECS控制台购买的ECS实例,可在Web+导入使用。 新增 导入ECS实例 支持.NET Core应用 支持在Web+控制台托管.NET Core应用。 新增 设置ASP.NET Core开发环境 部署ASP.NET Core应用至Web+ 支持Ruby应用 支持在Web+控制台托管Ruby应用。 新增 配置Ruby开发环境 部署Ruby on Rails应用至Web+ 显示部署环境资源 在部署环境概览页,可以展示部署环境内包含的资源。 新增 部署环境信息说明 2019-08-12 功能名称 功能描述 功能类型 相关文档 支持Python应用 支持在Web+控制台托管Python应用。 新增 设置Python开发环境 使用Flask开发应用 使用Django开发应用 反向代理优化 支持关闭反向代理服务器。 新增 反向代理服务器 2019-08-06 功能名称 功能描述 功能类型 相关文档 支持Go应用 支持在Web+控制台托管Go应用。 新增 设置Go开发环境 将Beego应用部署到Web+ 向Go应用的部署环境中添加RDS实例 支持PHP应用 支持在Web+控制台托管PHP应用。 新增 设置PHP开发环境 使用Symfony开发应用 使用Laravel框架开发应用 支持导入SLB实例 您在SLB控制台购买的SLB实例,可导入Web+使用。 新增 导入负载均衡SLB 应用生命周期挂钩脚本 Web+提供了通过设置命令来管理用户的服务进程,以及通过设置生命周期挂钩来简化部署、监控、运维和治理等应用生命周期管理操作。 新增 命令与生命周期挂钩 增加技术栈版本 在部分技术栈内,有多个技术栈版本可选择。 新增 技术栈 2019-07-25 功能名称 功能描述 功能类型 相关文档 功能优化 产品功能性能优化,使Web+的使用体验更良好。 优化 / 2019-07-15 功能名称 功能描述 功能类型 相关文档 支持Node.js应用 支持在Web+托管Node.js语言的应用。 新增 设置Node.js开发环境 将Express应用部署到Web+ 向Node.js应用部署环境中添加RDS数据库实例 支持RDS 支持在控制台和CLI内为部署环境配置RDS。 新增 云数据库RDS 变更操作清单 在部署环境中变更配置时,会罗列出变更资源的清单。 新增 / 2019-06-14 功能名称 功能描述 功能类型 相关文档 产品正式公测 Web+正式在阿里云公测上线,免费开放给用户托管应用。 新增 什么是Web应用托管服务Web+? 支持Java技术栈应用 支持在控制台和CLI内将Java技术栈的应用托管至Web+。 新增 设置Java开发环境 使用Spring Boot开发应用 向Java应用的部署环境中添加RDS实例 支持Tomcat技术栈应用 支持在控制台和CLI内将Tomcat技术栈的应用托管至Web+。 新增 项目文件夹结构设置 使用Web+部署Tomcat应用 日志和诊断 支持下载日志和诊断信息排查问题。 新增 查看日志 支持控制台部署 可以在控制台快速创建应用并部署。 新增 在Web+控制台快速部署应用 支持CLI部署 可以使用CLI快速创建应用并部署。 新增 使用CLI快速部署Java应用
1934890530796658 2020-03-23 15:41:58 0 浏览量 回答数 0

回答

protocol换成nio试试######这个试过了 ,基本上还一样 ###### 1. 服务器资源     服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。     (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。     (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。     (3) 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。 2. 利用缓存和压缩     对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。     另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。可以参考之前写的《 利用nginx加速web访问》。     除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。 3. 采用集群     单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。可以参考之前写的《 利用nginx+tomcat+memcached组建web服务器负载均衡》。 4. 优化tomcat参数     这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。 <Connector port="8080"               protocol="org.apache.coyote.http11.Http11NioProtocol"              connectionTimeout="20000"              redirectPort="8443"               maxThreads="500"               minSpareThreads="20"              acceptCount="100"             disableUploadTimeout="true"             enableLookups="false"               URIEncoding="UTF-8" />  5. 改用APR库     tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。     NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成 org.apache.coyote.http11.Http11NioProtocol,重启即可生效。上面配置我已经改过了,默认的是HTTP/1.1。     APR则需要安装第三方库,在高并发下会让性能有明显提升。具体安装办法可以参考http://www.cnblogs.com/huangjingzhou/articles/2097241.html。安装完成后重启即可生效。如使用默认protocal就是apr,但最好把将protocol修改成org.apache.coyote.http11.Http11AprProtocol,会更加明确。     在官方找到一个表格详细说明了这三种方式的区别:                   Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector                               BIO                         NIO                       APR  Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol  Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards  Support Polling              NO                          YES                       YES  Polling Size                 N/A                   maxConnections             maxConnections  Read Request Headers      Blocking                  Sim Blocking                   Blocking  Read Request Body         Blocking                  Sim Blocking                   Blocking  Write Response            Blocking                  Sim Blocking                   Blocking  Wait for next Request     Blocking                  Non Blocking               Non Blocking  Max Connections        maxConnections              maxConnections             maxConnections  6. 优化网络     Joel也明确提出了优化网卡驱动可以有效提升性能,这个对于集群环境工作的时候尤为重要。由于我们采用了linux服务器,所以优化内核参数也是一个非常重要的工作。给一个参考的优化参数: 1. 修改/etc/sysctl.cnf文件,在最后追加如下内容:    net.core.netdev_max_backlog = 32768  net.core.somaxconn = 32768  net.core.wmem_default = 8388608  net.core.rmem_default = 8388608  net.core.rmem_max = 16777216  net.core.wmem_max = 16777216  net.ipv4.ip_local_port_range = 1024 65000  net.ipv4.route.gc_timeout = 100  net.ipv4.tcp_fin_timeout = 30  net.ipv4.tcp_keepalive_time = 1200  net.ipv4.tcp_timestamps = 0  net.ipv4.tcp_synack_retries = 2  net.ipv4.tcp_syn_retries = 2  net.ipv4.tcp_tw_recycle = 1  net.ipv4.tcp_tw_reuse = 1  net.ipv4.tcp_mem = 94500000 915000000 927000000  net.ipv4.tcp_max_orphans = 3276800  net.ipv4.tcp_max_syn_backlog = 65536    2. 保存退出,执行sysctl -p生效  7. 让测试说话     优化系统最忌讳的就是只调优不测试,有时不适当的优化反而会让性能更低。以上所有的优化方法都要在本地进行性能测试过后再不断调整参数,这样最终才能达到最佳的优化效果。   补充Bio、Nio、Apr模式的测试结果:     对于这几种模式,我用ab命令模拟1000并发测试10000词,测试结果比较意外,为了确认结果,我每种方式反复测试了10多次,并且在两个服务器上都测试了一遍。结果发现Bio和Nio性能差别非常微弱,难怪默认居然还是Bio。但是采用apr,连接建立的速度会有50%~100%的提升。直接调用操作系统层果然神速啊,这里强烈推荐apr方式!
kun坤 2020-06-04 10:39:45 0 浏览量 回答数 0

问题

【开源项目】Nacos问答集锦

nacos 如果注册到不同的命名空间下,如何相互调用呢使用nacos-server-1.0.0时出现日志不兼容情况,请问是什么原因导致的nacos-server 空配置报错,java.util.Co...
一人吃饱,全家不饿 2021-02-02 10:51:08 11 浏览量 回答数 0

问题

【精品问答】Java微服务架构之Spring Boot核心知识 100问(附源码)

Spring Boot是一个简化Spring开发的框架。用来监护spring应用开发。spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。 下面是为大家准备的Spring Boo...
游客pklijor6gytpx 2019-12-01 22:04:21 850 浏览量 回答数 0

问题

【精品问答】Java经典问答之SpringBoot 100问

关于Java经典问答之SpringBoot 100问, 1、Spring 和 SpringBoot 有什么不同? 2、怎么使用 Maven 来构建一个 SpringBoot 程序? 3、Spr...
问问小秘 2019-12-01 22:00:40 1176 浏览量 回答数 0

问题

安全技术百问,老板再也不用担心病毒勒索了!

近期安全事件频发,从GitLab数据库被删除事件以及炉石传说数据库问题以及MongoDB黑客赎金事件,互联网以及云上安全又一次引发社会热议。互联网界有一句很流行的话,“没有什么应用是没有遭受过攻击的,只是因为你不知道”。所以说目前的互联网安...
yq传送门 2019-12-01 20:11:52 24648 浏览量 回答数 15

问题

阿里云Linux下Nginx服务器整合php

听说镜像要收费了?不知是真是假?所以说自己动手丰衣足食,前几天主要说的一些Nginx和tomcat的基础知识以及集群的基础配置。 今天重点说一些php-fpm的安装配置。 nginx本身...
小柒2012 2019-12-01 21:20:48 9433 浏览量 回答数 2

回答

Java Java核心技术·卷 I(原书第10版)| Core Java Volume 讲的很全面,书中的代码示例都很好,很适合Java入门。 但是作者不太厚道的是把现在没人用的GUI编程放在了第一卷,基本上10~13章是可以不用读的。 Java性能权威指南|Java Performance: The Definitive Guide 市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。 通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。 实战Java高并发程序设计|葛一鸣 由部分段落的行文来看,搬了官方文档。 也有一些第一人称的叙述和思考,也能看出作者也是花了一点心思的。胜在比较基础,涉及到的知识点也还很全面(讲到了流水线计算和并发模型这些边边角角的),但是由于是编著,全书整体上不够统一和深入,适合作为学习高并发的第一本工具书。 Java 8实战 对Java8的新特性讲解的十分到位,尤其是lamdba表达式和流的操作。 再者对于Java8并发处理很有独到见解。对于并行数据处理和组合式异步编程还需要更深的思考才能更加掌握。 推荐给再用java8但没有去真正了解的人看,有很多你不知道的细节、原理和类库设计者的用心良苦在里面、内容没有很难,抽出几个小时就能看完,花费的时间和收获相比,性价比很高。 Java并发编程实战 先不谈本书的内容如何,光书名就足够吸引不少目光。“并发”这个词在Java世界里往往和“高级、核心”等字眼相联系起来,就冲着这两个字,都将勾起软件工程师们埋藏在心底那种对技术的探索欲和对高级API的驾驭感。 程序员嘛,多少都有点职业病。其实Java对“并发”优化从未停止过,从5.0到7.0,几乎每个版本的新特性里,都会针对前一版本在“并发”上有所改进。这种改进包括提供更丰富的API接口、JVM底层性能优化等诸多方面。 Thinking in Java 很美味的一本书,不仅有icecreamm,sundae,sandwich,还有burrito!真是越看越饿啊~ Effective Java中文版(第3版)|Effective Java Third Edition Java 高阶书籍,小白劝退。介绍了关于Java 编程的90个经验技巧。 作者功力非常强悍,导致这本书有时知识面迁移很广。总之,非常适合有一定Java开发经验的人阅读提升。 深入理解Java虚拟机(第3版)| 周志明 浅显易懂。最重要的是开启一扇理解虚拟机的大门。 内存管理机制与Java内存模型、高效并发这三章是特别实用的。 Java虚拟机规范(Java SE 8版)|爱飞翔、周志明 整本书就觉得第二章的方法字节码执行流程,第四章的前8节和第五章能看懂一些。其他的过于细致和琐碎了。 把Java字节码讲的很清楚了,本质上Java虚拟机就是通过字节码来构建的一套体系罢了。所以字节码说的非常细致深入。 数据&大数据 数据结构与算法分析|Data Structures and Algorithm Analysis in Java 数据结构是计算机的核心,这部书以java语言为基础,详细的介绍了基本数据结构、图、以及相关的排序、最短路径、最小生成树等问题。 但是有一些高级的数据结构并没有介绍,可以通过《数据结构与算法分析——C语言描述》来增加对这方面的了解。 MySQL必知必会 《MySQL必知必会》MySQL是世界上最受欢迎的数据库管理系统之一。 书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。 数据库系统概念|Datebase System Concepts(Fifth Edition) 从大学读到现在,每次拿起都有新的收获。而且这本书还是对各个数据相关领域的概览,不仅仅是数据库本身。 高性能MySQL 对于想要了解MySQL性能提升的人来说,这是一本不可多得的书。 书中没有各种提升性能的秘籍,而是深入问题的核心,详细的解释了每种提升性能的原理,从而可以使你四两拨千斤。授之于鱼不如授之于渔,这本书做到了。 高可用MySQL 很实用的书籍,只可惜公司现有的业务和数据量还没有达到需要实践书中知识的地步。 利用Python进行数据分析|唐学韬 内容还是跟不上库的发展速度,建议结合里面讲的库的文档来看。 内容安排上我觉得还不错,作者是pandas的作者,所以对pandas的讲解和设计思路都讲得很清楚。除此以外,作者也是干过金融数据分析的,所以后面专门讲了时间序列和金融数据的分析。 HBase 看完影印版第一遍,开始以为会是大量讲API,实际上除了没有将HBase源代码,该讲的都讲了,CH8,9章留到最后看的,确实有点顿悟的感觉,接下来需要系统的看一遍Client API,然后深入代码,Come ON! Programming Hive Hive工具书,Hive高级特性。 Hadoop in Practice| Alex Holmes 感觉比action那本要强 像是cookbook类型的 整个过完以后hadoop生态圈的各种都接触到了 这本书适合当参考手册用。 Hadoop技术内幕|董西成 其实国人能写这样的书,感觉还是不错的,不过感觉很多东西不太深入,感觉在深入之前,和先有整体,带着整体做深入会更好一点, jobclient,jobtracer,tasktracer之间的关系最好能系统化 Learning Spark 很不错,core的原理部分和api用途解释得很清楚,以前看文档和代码理解不了的地方豁然开朗。 不足的地方是后几章比较弱,mllib方面没有深入讲实现原理。graphx也没有涉及 ODPS权威指南 基本上还算一本不错的入门,虽然细节方面谈的不多,底层也不够深入,但毕竟是少有的ODPS书籍,且覆盖面很全,例子也还行。 数据之巅|徐子沛 从一个新的视角(数据)切入,写美国历史,统计学的发展贯穿其中,草蛇灰线,伏脉千里,读起来波澜壮阔。 消息队列&Redis RabbitMQ实战 很多年前的书了,书中的例子现在已经不适用了,推荐官方教程。 一些基础还是适用,网上也没有太多讲rab的书籍,将就看下也行,我没用过所以…. Apache Kafka源码剖析|徐郡明 虽然还没看,但知道应该不差。我是看了作者的mybatis源码分析,再来看这本的,相信作者。 作者怎么有这么多时间,把框架研究的这么透彻,佩服,佩服。 深入理解Kafka:核心设计与实践原理|朱忠华 通俗易懂,图文并茂,用了很多图和示例讲解kafka的架构,从宏观入手,再讲到细节,比较好,值得推荐。 深入理解Kafka是市面上讲解Kafka核心原理最透彻的,全书都是挑了kafka最核心的细节在讲比如分区副本选举、分区从分配、kafka数据存储结构、时间轮、我认为是目前kafka相关书籍里最好的一本。 Kafka 认真刷了 kafka internal 那章,看了个talk,算是入了个门。 系统设计真是门艺术。 RocketMQ实战与原理解析|杨开元 对RocketMQ的脉络做了一个大概的说明吧,深入细节的东西还是需要自己看代码 Redis设计与实现|黄健宏 部分内容写得比较啰嗦,当然往好了说是对新手友好,不厌其烦地分析细节,但也让整本书变厚了,个人以为精炼语言可以减少20%的内容。 对于有心一窥redis实现原理的读者来说,本书展露了足够丰富的内容和细节,却不至于让冗长的实现代码吓跑读者——伪代码的意义在此。下一步是真正读源码了。 Redis 深度历险:核心原理与应用实践|钱文品 真心不错,数据结构原理+实际应用+单线程模型+集群(sentinel, codis, redis cluster), 分布式锁等等讲的都十分透彻。 一本书的作用不就是系统性梳理,为读者打开一扇窗,读者想了解更多,可以自己通过这扇窗去Google。这本书的一个瑕疵是最后一章吧,写的仓促了。不过瑕不掩瑜。 技术综合 TCP/IP详解 卷1:协议 读专业性书籍是一件很枯燥的事,我的建议就是把它作为一本手册,先浏览一遍,遇到问题再去详细查,高效。 Netty in Action 涉及到很多专业名词新概念看英文原版顺畅得多,第十五章 Choosing the right thread model 真是写得太好了。另外结合Ron Hitchens 写的《JAVA NIO》一起看对理解JAVA NIO和Netty还是很有帮助的 ZooKeeper 值得使用zookeeper的人员阅读, 对于zookeeper的内部机制及api进行了很详细的讲解, 后半部分深入地讲解了zookeeper中ensemble互相协作的流程, 及group等高级配置, 对zookeeper的高级应用及其它类似系统的设计都很有借鉴意义. 从Paxos到Zookeeper|倪超 分布式入门鼻祖,开始部分深入阐述cap和base理论,所有的分布式框架都是围绕这个理论的做平衡和取舍,中间 zk的原理、特性、实战也讲的非常清晰,同时讲cap理论在zk中是如何体现,更加深你对cap的理解. 深入理解Nginx(第2版)|陶辉 云里雾里的快速读了一遍,主要是读不懂,读完后的感受是设计的真好。 原本是抱着了解原理进而优化性能的想法来读的,却发现书中的内容都是讲源码,作者对源码的注释超级详细,非常适合开发者,但不适合使用者,给个五星好评是因为不想因为我这种菜鸡而埋没了高质量内容。 另外别人的代码写的真好看,即便是过程式语言程序也吊打我写的面向对象语言程序。 作者是zookeeper的活跃贡献者,而且是很资深的研究员,内容比较严谨而且较好的把握住了zk的精髓。书很薄,但是没有废话,选题是经过深思熟虑的。 深入剖析Tomcat 本书深入剖析Tomcat 4和Tomcat 5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。 Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。 深入理解计算机系统 | 布莱恩特 无论是内容还是纸张印刷,都是满分。计算机学科的集大成之作。引导你如何练内功的,算是高配版本的计算机导论,目的是釜底抽薪引出来操作系统、组成原理这些专业核心的课程。帮助我们按图索骥,点亮一个一个技能树。 架构探险分布式服务框架 | 李业兵 刚看前几章的时候,心里满脑子想得都是这特么贴一整页pom文件代码上来干鸡毛,又是骗稿费的,买亏了买亏了,后来到序列化那章开始,诶?还有那么点意思啊。 到服务注册中心和服务通讯,60块钱的书钱已经赚回来了。 知识是无价的,如果能花几十块钱帮你扫了几个盲区,那就是赚了。 深入分析JavaWeb技术内幕 | 许令波 与这本书相识大概是四年前是在老家的北方图书城里,当时看到目录的感觉是真的惊艳,对当时刚入行的自己来说,这简直就是为我量身定做的扫盲科普集啊。 但是可惜的是,这本书在后来却一直没机会读上。然后经过四年的打怪升级之后,这次的阅读体验依旧很好。 其中,java编译原理、 Servlet工作原理、 Tomcat、spring和iBatis这几章的收获很大。 前端 jQuery 技术内幕| 高云 非常棒的一本书,大大降低了阅读jquery源码的难度(虽然还是非常难)。 Head First HTML与CSS(第2版) 翻了非常久的时间 断断续续 其实从头翻到尾 才发现一点都不难。 可我被自己的懒惰和畏难情绪给拖累了 简单说 我成了自己往前探索的负担。网页基础的语法基本都涵盖了 限于文本形态 知识点都没法像做题一样被反复地运用和复习到。通俗易懂 这不知算是多高的评价? 作为入门真心算不错了 如果更有耐心 在翻完 HTML 后 对 CSS 部分最好是可以迅速过一遍 找案例练习估计更好 纸上得来终觉浅 总是这样。 JavaScript高级程序设计(第3版) JavaScript最基础的书籍,要看认真,慢慢地看,累计接近1000小时吧。而且对象与继承,性能优化,HTML5 api由于没有实践或缺乏代码阅读量导致看的很糊涂,不过以后可以遇到时再翻翻,或者看更专业的书。 深入理解ES6 Zakas的又一部杰作,他的作品最优秀的地方在于只是阐述,很少评价,这在帮助我们夯实基础时十分有意义,我也喜欢这种风格。 我是中英文参照阅读的,译本后半部分有一些文字上的纰漏,但是总体来说忠实原文,水平还是相当不错,希望再版时可以修复这些文字问题。 高性能JavaScript 还是挺不错的。尤其是对初学者。总结了好多程序方面的好习惯。 不过对于老手来说,这些常识已经深入骨髓了。 深入浅出Node.js|朴灵 本书是我看到现在对Node.JS技术原理和应用实践阐述的最深入,也最全面的一本书。鉴于作者也是淘宝的一位工程师,在技术总是国外好的大环境下,没有理由不给本书五颗星。 作者秉着授人于鱼不如授人于渔的精神,细致入微的从V8虚拟机,内存管理,字符串与Buffer的应用,异步编程的思路和原理这些基础的角度来解释Node.JS是如何工作的,比起市面上众多教你如何安装node,用几个包编写一些示例来比,本书绝对让人受益匪浅。 认真看完本书,几乎可以让你从一个Node的外行进阶到专家的水平。赞! 总结 其实我觉得在我们现在这个浮躁的社会,大家闲暇时间都是刷抖音,逛淘宝,微博……他们都在一点点吞噬你的碎片时间,如果你尝试着去用碎片的时间看看书,我想时间久了你自然能体会这样的好处。 美团技术团队甚至会奖励读完一些书本的人,很多公司都有自己的小图书馆,我觉得挺好的。 文章来自:敖丙
剑曼红尘 2020-03-20 14:52:22 0 浏览量 回答数 0

回答

一、内存溢出类型 1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况) set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、java.lang.OutOfMemoryError: Java heap space 第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。 注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。 垃圾回收GC的角色 JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收: 当应用程序线程空闲;另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆不足的问题时,就会报out of memory错误。因为这个异常根据系统运行环境决定,所以无法预期它何时出现。 根据GC的机制,程序的运行会引起系统运行环境的变化,增加GC的触发机会。 为了避免这些问题,程序的设计和编写就应避免垃圾对象的内存占用和GC的开销。显示调用System.GC()只能建议JVM需要在内存中对垃圾对象进行回收,但不是必须马上回收, 一个是并不能解决内存资源耗空的局面,另外也会增加GC的消耗。 二、JVM内存区域组成 简单的说java中的堆和栈 java把内存分两种:一种是栈内存,另一种是堆内存 1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配; 2。堆内存用来存放由new创建的对象和数组 在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理 堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。缺点就是要在运行时动态分配内存,存取速度较慢; 栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活性。 java堆分为三个区:New、Old和Permanent GC有两个线程: 新创建的对象被分配到New区,当该区被填满时会被GC辅助线程移到Old区,当Old区也填满了会触发GC主线程遍历堆内存里的所有对象。Old区的大小等于Xmx减去-Xmn java栈存放 栈调整:参数有+UseDefaultStackSize -Xss256K,表示每个线程可申请256k的栈空间 每个线程都有他自己的Stack 三、JVM如何设置虚拟内存 提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 提示:JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 提示:假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。 简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制, 这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了 提示:注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。 提示:设置NewSize、MaxNewSize相等,"new"的大小最好不要大于"old"的一半,原因是old区如果不够大会频繁的触发"主" GC ,大大降低了性能 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64; 由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 解决方法:手动设置Heap size 修改TOMCAT_HOME/bin/catalina.bat 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 四、性能检查工具使用 定位内存泄漏: JProfiler工具主要用于检查和跟踪系统(限于Java开发的)的性能。JProfiler可以通过时时的监控系统的内存使用情况,随时监视垃圾回收,线程运行状况等手段,从而很好的监视JVM运行情况及其性能。 1. 应用服务器内存长期不合理占用,内存经常处于高位占用,很难回收到低位; 2. 应用服务器极为不稳定,几乎每两天重新启动一次,有时甚至每天重新启动一次; 3. 应用服务器经常做Full GC(Garbage Collection),而且时间很长,大约需要30-40秒,应用服务器在做Full GC的时候是不响应客户的交易请求的,非常影响系统性能。 因为开发环境和产品环境会有不同,导致该问题发生有时会在产品环境中发生,通常可以使用工具跟踪系统的内存使用情况,在有些个别情况下或许某个时刻确实是使用了大量内存导致out of memory,这时应继续跟踪看接下来是否会有下降, 如果一直居高不下这肯定就因为程序的原因导致内存泄漏。 五、不健壮代码的特征及解决办法 1、尽早释放无用对象的引用。好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露。 对于仍然有指针指向的实例,jvm就不会回收该资源,因为垃圾回收会将值为null的对象作为垃圾,提高GC回收机制效率; 2、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域; String str = "aaa"; String str2 = "bbb"; String str3 = str + str2;//假如执行此次之后str ,str2以后再不被调用,那它就会被放在内存中等待Java的gc去回收,程序内过多的出现这样的情况就会报上面的那个错误,建议在使用字符串时能使用StringBuffer就不要用String,这样可以省不少开销; 3、尽量少用静态变量,因为静态变量是全局的,GC不会回收的; 4、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。 这是一个案例想定供大家警戒 使用jspsmartUpload作文件上传,运行过程中经常出现java.outofMemoryError的错误, 检查之后发现问题:组件里的代码 m_totalBytes = m_request.getContentLength(); m_binArray = new byte[m_totalBytes]; 问题原因是totalBytes这个变量得到的数极大,导致该数组分配了很多内存空间,而且该数组不能及时释放。解决办法只能换一种更合适的办法,至少是不会引发outofMemoryError的方式解决。 5、尽量运用对象池技术以提高系统性能;生命周期长的对象拥有生命周期短的对象时容易引发内存泄漏,例如大集合对象拥有大数据量的业务对象的时候,可以考虑分块进行处理,然后解决一块释放一块的策略。 6、不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。可以适当的使用hashtable,vector 创建一组对象容器,然后从容器中去取那些对象,而不用每次new之后又丢弃 7、一般都是发生在开启大型文件或跟数据库一次拿了太多的数据,造成 Out Of Memory Error 的状况,这时就大概要计算一下数据量的最大值是多少,并且设定所需最小及最大的内存空间值。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!
牧明 2019-12-02 02:16:21 0 浏览量 回答数 0

问题

CDN证书相关常见问题

书格式说明 常用证书申请流程 1. 本地生成私钥:openssl genrsa -out privateKey.pem 2048 其中privateKey.pem为您的私钥文件,请妥善保管。 2. 生成...
樰篱 2019-12-01 21:51:49 2277 浏览量 回答数 0

问题

开发者论坛一周精粹(第五十五期) 一次可以备案几个网站?

开发者论坛每周选取精华内容总结,精选论坛优质贴,每周更新一期,方便大家阅读! [attachment=144403] 本期是两周合一,更多的干货给你分享。 全...
福利达人 2019-12-01 21:35:13 1744 浏览量 回答数 1

问题

Centos 系统优化思路整理

Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下有无数的开源软件支撑,我们常见的Apache、tomcat、mysql、php等等,开源软件的最大理念是...
holdb 2019-12-01 22:03:44 8681 浏览量 回答数 5

问题

【精品问答】Java必备核心知识1000+(附源码)

为了方便Java开发者快速找到相关技术问题和答案,开发者社区策划了Java技术1000问内容,包含最基础的如何学Java、实践中遇到的技术问题、RocketMQ面试、Java容器部署实践等维度内容。 我们会以每...
问问小秘 2019-12-01 22:00:28 870 浏览量 回答数 1

问题

通过自动重连方式解决RDS闪断问题

RDS闪断解决方案 一RDS闪断的原因和影响: 1、    什么是闪断? 是指游戏APP与RDS之间的网络链路在短时间内(一般不超过三十秒) 发生了的中断。 2、 ...
nono20011908 2019-12-01 21:07:16 27529 浏览量 回答数 1

回答

转自:思否 话说当下技术圈的朋友,一起聚个会聊个天,如果不会点大数据的知识,感觉都融入不了圈子,为了以后聚会时让你有聊有料,接下来就跟随我的讲述,一起与大数据混个脸熟吧,不过在“撩”大数据之前,还是先揭秘一下研发这些年我们都经历了啥? 缘起:应用系统架构的从 0 到 1 揭秘:研发这些年我们都经历了啥? 大道至简。生活在技术圈里,大家静下来想想,无论一个应用系统多庞大、多复杂,无非也就是由一个漂亮的网站门面 + 一个丑陋的管理模块 + 一个闷头干活的定时任务三大板块组成。 我们负责的应用系统当然也不例外,起初设计的时候三大模块绑在一起(All in one),线上跑一个 Tomcat 轻松就搞定,可谓是像极了一个大泥球。 衍化至繁。由于网站模块、管理平台、定时任务三大模块绑定在一起,开发协作会比较麻烦,时不时会有代码合并冲突出现;线上应用升级时,也会导致其它模块暂时不能使用,例如如果修改了一个定时任务的配置,可能会导致网站、管理平台的服务暂时不能用。面对诸多的不便,就不得不对 All in one 的大泥球系统进行拆解。 随着产品需求的快速迭代,网站 WEB 功能逐渐增多,我们起初设计时雄心勃勃(All in one 的单体架构),以为直接按模块设计叠加实现就好了,谁成想系统越发显得臃肿(想想也是走弯路啦!)。所以不得不改变实现思路,让模块服务下沉,分布式思想若现——让原来网站 WEB 一个系统做的事,变成由子系统分担去完成。 应用架构的演变,服务模块化拆分,随之而来的就是业务日志、业务数据散落在各处。随着业务的推广,业务量逐日增多,沉淀的数据日益庞大,在业务层面、运维层面上的很多问题,逐渐开始暴露。 在业务层面上,面对监管机构的监管,整合提取散落在各地的海量数据稍显困难;海量数据散落,想做个统计分析报表也非常不易。在运维层面上,由于缺少统一的日志归档,想基于日志做快速分析也比较困难;如果想从散落在各模块的日志中,进行调用链路的分析也是相当费劲。 面对上述问题,此时一个硕大的红色问号出现在我们面前,到底该如何解决? 面对结构化的业务数据,不妨先考虑采用国内比较成熟的开源数据库中间件 Sharding-JDBC、MyCat 看是否能够解决业务问题;面对日志数据,可以考虑采用 ELK 等开源组件。如果以上方案或者能尝试的方式都无法帮我们解决,尝试搬出大数据吧。 那到底什么时候需要用大数据呢?大数据到底能帮我们解决什么问题呢?注意,前方高能预警,门外汉“撩”大数据的正确姿势即将开启。 邂逅:一起撬开大数据之门 槽点:门外汉“撩”大数据的正确姿势 与大数据的邂逅,源于两个头痛的问题。第一个问题是海量数据的存储,如何解决?第二个问题是海量数据的计算,如何解决? 面对这两个头痛的问题,不得不提及谷歌的“三驾马车”(分布式文件系统 GFS、MapReduce 和 BigTable),谷歌“三驾马车”的出现,奠定了大数据发展的基石,毫不夸张地说,没有谷歌的“三驾马车”就没有大数据,所以接下来很有必要逐一认识。 大家都知道,谷歌搜索引擎每天要抓取数以亿计的网页,那么抓取的海量数据该怎么存储? 谷歌痛则思变,重磅推出分布式文件系统 GFS。面对谷歌推出的分布式文件系统 GFS 架构,如 PPT 中示意,参与角色着实很简单,主要分为 GFS Master(主服务器)、GFS Chunkserver(块存储服务器)、GFS Client(客户端)。 不过对于首次接触这个的你,可能还是一脸懵 ,大家心莫慌,接下来容我抽象一下。 GFS Master 我们姑且认为是古代的皇上,统筹全局,运筹帷幄。主要负责掌控管理所有文件系统的元数据,包括文件和块的命名空间、从文件到块的映射、每个块所在的节点位置。说白了,就是要维护哪个文件存在哪些文件服务器上的元数据信息,并且定期通过心跳机制与每一个 GFS Chunkserver 通信,向其发送指令并收集其状态。 GFS Chunkserver 可以认为是宰相,因为宰相肚子里面能撑船,能够海纳百川。主要提供数据块的存储服务,以文件的形式存储于 Chunkserver 上。 GFS Client 可以认为是使者,对外提供一套类似传统文件系统的 API 接口,对内主要通过与皇帝通信来获取元数据,然后直接和宰相交互,来进行所有的数据操作。 为了让大家对 GFS 背后的读写流程有更多认识,献上两首歌谣。 到这里,大家应该对分布式文件系统 GFS 不再陌生,以后在饭桌上讨论该话题时,也能与朋友交涉两嗓子啦。 不过这还只是了解了海量数据怎么存储,那如何从海量数据存储中,快速计算出我们想要的结果呢? 面对海量数据的计算,谷歌再次创新,推出了 MapReduce 编程模型及实现。 MapReduce 主要是采取分而治之的思想,通俗地讲,主要是将一个大规模的问题,分成多个小规模的问题,把多个小规模问题解决,然后再合并小规模问题的结果,就能够解决大规模的问题。 也有人说 MapReduce 就像光头强的锯子和锤子,世界上的万事万物都可以先锯几下,然后再锤几下,就能轻松搞定,至于锯子怎么锯,锤子怎么锤,那就是个人的手艺了。 这么解释不免显得枯燥乏味,我们不妨换种方式,走进生活真实感受 MapReduce。 斗地主估计大家都玩过,每次开玩之前,都会统计一副牌的张数到底够不够,最快的步骤莫过于:分几份给大家一起数,最后大家把数累加,算总张数,接着就可以愉快地玩耍啦... ...这不就是分而治之的思想吗?!不得不说架构思想来源于人们的生活! 再举个不太贴切的例子来感受MapReduce 背后的运转流程,估计很多人掰过玉米,每当玉米成熟的季节,地主家就开始忙碌起来。 首先地主将一亩地的玉米分给处于空闲状态的长工来处理;专门负责掰玉米的长工领取任务,开始掰玉米操作(Map 操作),并把掰好的玉米放到在麻袋里(缓冲区),麻袋装不下时,会被装到木桶中(溢写),木桶被划分为蓝色的生玉米木桶、红色的熟玉米木桶(分区),地主通知二当家来“收”属于自己的那部分玉米,二当家收到地主的通知后,就到相应的长工那儿“拿回”属于自己的那部分玉米(Fetch 操作),二当家对收取的玉米进行处理(Reduce 操作),并把处理后的结果放入粮仓。 一个不太贴切的生活体验 + 一张画得不太对的丑图 = 苦涩难懂的技术,也不知道这样解释,你了解了多少?不过如果以后再谈大数据,知道 MapReduce 这个词的存在,那这次的分享就算成功(哈哈)。 MapReduce 解决了海量数据的计算问题,可谓是力作,但谷歌新的业务需求一直在不断出现。众所周知,谷歌要存储爬取的海量网页,由于网页会不断更新,所以要不断地针对同一个 URL 进行爬取,那么就需要能够存储一个 URL 不同时期的多个版本的网页内容。谷歌面临很多诸如此类的业务场景,面对此类头痛的需求,该怎么办? 谷歌重磅打造了一款类似以“URL + contents + time stamp”为 key,以“html 网页内容”为值的存储系统,于是就有了 BigTable 这个键值系统的存在(本文不展开详述)。 至此,两个头痛的问题就算解决了。面对海量数据存储难题,谷歌推出了分布式文件系统 GFS、结构化存储系统 BigTable;面对海量数据的计算难题,谷歌推出了 MapReduce。 不过静下来想想,GFS 也好、MapReduce 也罢,无非都是秉承了大道至简、一人掌权、其它人办事、人多力量大的设计理念。另外画龙画虎难画骨,建议闲暇之余也多些思考:为什么架构要这么设计?架构设计的目标到底是如何体现的? 基于谷歌的“三驾马车”,出现了一大堆开源的轮子,不得不说谷歌的“三驾马车”开启了大数据时代。了解了谷歌的“三驾马车”的设计理念后,再去看这些开源的轮子,应该会比较好上手。 好了,门外汉“撩”大数据就聊到这儿吧,希望通过上文的分享能够了解几个关键词:大道至简、衍化至繁、谷歌三驾马车(GFS、MapReduce、BigTable)、痛则思变、开源轮子。 白头:番外篇 扯淡:不妨换一种态度 本文至此也即将接近尾声,最后是番外篇~ 首先,借用日本剑道学习心诀“守、破、离”,希望我们一起做一个精进的人。 最后,在有限的时间内要多学习,不要停下学习的脚步,在了解和使用已经有的成熟技术之时,更要多思考,开创适合自己工作场景的解决方案。 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第6期-宜信支付结算部支付研发团队高级工程师许赛赛《揭秘:“撩”大数据的正确姿势》 分享者:宜信支付结算部支付研发团队高级工程师许赛赛 原文首发于公号-野指针
茶什i 2020-01-10 15:19:51 0 浏览量 回答数 0

问题

ISV接入钉钉详细示例以及代码(JAVA版本)  --服务窗代码部分放出

本帖和代码  持续更新,请收藏关注。 talk is cheap, show me the code =============...
蛋蛋oo蛋蛋 2019-12-01 21:17:56 47968 浏览量 回答数 37

问题

【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑

阿里极客公益活动: 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来帮助用户成长 本次活动特邀百位阿里技术专家对Java常...
管理贝贝 2019-12-01 20:07:15 27612 浏览量 回答数 19

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT