服务器内网访问没啥问题,外网访问很慢

这篇博客讨论了当Java应用程序遇到内存不足错误时,但系统资源实际上充足的场景。问题可能源于Linux系统的文件句柄限制,默认值较低可能导致线程数受限。此外,恶意请求也可能导致服务器响应缓慢。解决方案包括检查和调整系统设置,如增加文件句柄限制,并优化Java应用程序的内存配置。
摘要由CSDN通过智能技术生成

特别做一下记录:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (gcTaskThread.cpp:48), pid=25027, tid=0x00007f18beedd700
#
# JRE version:  (8.0_222-b10) (build )
# Java VM: OpenJDK 64-Bit Server VM (25.222-b10 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#

---------------  T H R E A D  ---------------

Current thread (0x00007f18b804b800):  JavaThread "Unknown thread" [_thread_in_vm, id=25028, stack(0x00007f18bedde000,0x00007f18beede000)]

Stack: [0x00007f18bedde000,0x00007f18beede000],  sp=0x00007f18beedc7c0,  free space=1017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xaced2d]
V  [libjvm.so+0x4f44fa]
V  [libjvm.so+0x5c5c7f]
V  [libjvm.so+0x5c5457]
V  [libjvm.so+0x8eb164]
V  [libjvm.so+0xa979c9]
V  [libjvm.so+0xa97c72]
V  [libjvm.so+0x626545]
V  [libjvm.so+0xa7aa0f]
V  [libjvm.so+0x6a71bf]  JNI_CreateJavaVM+0x5f
C  [libjli.so+0x2f78]
C  [libpthread.so.0+0x7dd5]  start_thread+0xc5


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )

Other Threads:

=>0x00007f18b804b800 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=25028, stack(0x00007f18bedde000,0x00007f18beede000)]

VM state:not at safepoint (not fully initialized)

VM Mutex/Monitor currently owned by a thread: None

heap address: 0x0000000080200000, size: 30718 MB, Compressed Oops mode: Non-zero based:0x00000000801ff000, Oop shift amount: 3
Narrow klass base: 0x0000000000000000, Narrow klass shift: 0

GC Heap History (0 events):
No events

Deoptimization events (0 events):
No events

Classes redefined (0 events):
No events

Internal exceptions (0 events):
No events

Events (0 events):
No events
 

查看日志提示,java的虚拟内存不足, 网上查找问题

出现了JAVA 程序内存不够的问题,但经过测试后,发现内存及CPU空闲较多。

内存及CPU空闲较多,资源充足排除内存不足的影响,只能怀疑是哪里限制了最大线程数.

错误原因: 

Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量。
也就是说普通用户有软硬件的限制。这不是授权就可以解除的。 

另外一些恶意请求会把服务器给炸掉,要防止恶意请求,服务器要做限制,比如每秒钟限制请求数量。

参考博客:服务器外网访问很慢 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IPv6是下一代的互联网协议,相对于IPv4来说,它提供了大量的IP地址,使得每个设备都能够拥有独立的地址。在IPv6环境下,外网访问内网服务器相对而言更加简单和方便。 首先,内网服务器需要获得一个公网IPv6地址才能够被外网访问到。这可以通过互联网服务提供商(ISP)或者其他IPv6地址服务提供商获得。一旦获得了公网IPv6地址,就可以将其分配给内网服务器。 其次,需要在路由器或者防火墙上进行相应的配置。由于IPv6的地址数量庞大,一般不会出现地址的短缺问题,因此有必要进行网络地址转换(NAT)。但是,需要进行端口转发(Port Forwarding)的配置,以确保外网请求能够正确到达内网服务器。 然后,需要正确设置服务器的防火墙规则。确保防火墙允许外部的IPv6请求流量进入内部网络,并将请求正确地路由到内网服务器。同时,也需要考虑服务器的安全性,设置适当的安全措施,例如访问控制列表(ACL)等,以防止潜在的攻击。 最后,为了方便外网访问内网服务器,可以使用DNS(域名系统)服务将内网服务器的IPv6地址映射到一个易于记忆的域名上。这样,用户只需要输入域名即可访问内网服务器,而无需记住复杂的IPv6地址。 总的来说,IPv6环境下外网访问内网服务器相对简单,主要需要获得公网IPv6地址、进行端口转发配置、设置防火墙规则,并使用DNS服务提供域名解析。通过这些步骤,用户就能够方便地访问内网服务器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值