Powershell远程在Azure A7虚拟机执行Java JVM失败
2017-07-09 12:02
411 查看
近期。使用Powershell脚本在A7 (8核,56G内存)配置的 Azure VM(Virtual Machine。虚拟机)上远程运行Java JVM时 (java.exe -version)。总是失败并返回例如以下的错误信息。
相同的Powershell脚本。在其他低于A7配置的VM上远程运行一切正常;此外,假设使用远程桌面登录到VM上,再进行相同的操作,一切运行正常。
以上的实验排除了是JVM(1.7)本身的问题。 看来问题非常有可能是出在Powershell的远程运行方式上。
Powershell Remoting依赖于WinRM (Windows Remote Management)在远程机器上运行操作。默认情况下,WinRM为每一个Powershell远程连接分配了最大(MaxMemoryPerShellMB=1024)1G的内存空间(早期的版本号仅仅有150M),用于运行远程操作。
但远程操作所需的运行内存空间
> 1G时,就会出现了内存不足的问题,不同的操作可能表现会有所不同,如:有的会抛出OutOfMemoryException等。针对这个问题。解决的办法就是添加MaxMemoryPerShellMB,然后重新启动WinRM服务:
详细要添加到多大的内存,须要自己去实验一下。
參考资源
http://blog.patricknielsen.net/2012/01/powershell-remote-system-call-using.html
http://stackoverflow.com/questions/4741676/powershell-problem-running-java-remotely
相同的Powershell脚本。在其他低于A7配置的VM上远程运行一切正常;此外,假设使用远程桌面登录到VM上,再进行相同的操作,一切运行正常。
Error occurred during initialization of VM Unable to allocate 458752KB bitmaps for parallel garbage collection for the requested 14680064KB heap. Error occurred during initialization of VM Could not reserve enough space for object heap
以上的实验排除了是JVM(1.7)本身的问题。 看来问题非常有可能是出在Powershell的远程运行方式上。
Powershell Remoting依赖于WinRM (Windows Remote Management)在远程机器上运行操作。默认情况下,WinRM为每一个Powershell远程连接分配了最大(MaxMemoryPerShellMB=1024)1G的内存空间(早期的版本号仅仅有150M),用于运行远程操作。
但远程操作所需的运行内存空间
> 1G时,就会出现了内存不足的问题,不同的操作可能表现会有所不同,如:有的会抛出OutOfMemoryException等。针对这个问题。解决的办法就是添加MaxMemoryPerShellMB,然后重新启动WinRM服务:
$maxMemoryPerShellVM = 3072 Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB $maxMemoryPerShellVM Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB $maxMemoryPerShellVM Write-Output "List MaxMemoryPerShellMB configuration" Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB Get-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB # Restart WinRM service to make the change take effect Restart-Service winrm
详细要添加到多大的内存,须要自己去实验一下。
參考资源
http://blog.patricknielsen.net/2012/01/powershell-remote-system-call-using.html
http://stackoverflow.com/questions/4741676/powershell-problem-running-java-remotely
相关文章推荐
- 从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
- powershell 远程执行命令失败
- 【java基础】.class文件由虚拟机的解释器解释为机器码,这个机器码是给JVM执行的机器码,还是类似于.exe给操作系统执行的机器码
- java内功 ---- jvm虚拟机原理总结,侧重于虚拟机类加载执行系统
- 从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
- JAVA文件编译执行与虚拟机(JVM)介绍(转)
- Powershell远程在Azure A7虚拟机运行Java JVM失败
- 从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
- JAVA文件编译执行与虚拟机(JVM)介绍
- 深入Java虚拟机:JVM中的Stack和Heap
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解
- 设置TOMCAT的JVM虚拟机内存大小,解决Java heap space的异常
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- JVM(java 虚拟机)内存设置
- java编译执行与jvm介绍
- PowerShell 2.0 远程管理之启用和执行命令
- Sun Java Web Server可以远程执行任意命令
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解