Is jprofiler current version and other new ej technologies new products can be used for profiling and monitoring azure, AWS?
JProfiler profiles JVMs. Whether it can profile a particular JVM depends on the architecture and the version of the JVM, but not on the cloud service where the JVM is running.
For a current list of supported platforms and JVMs, see
https://www.ej-technologies.com/products/jprofiler/featuresPlatforms.html
Related
I'm trying to monitor JVM usages in IBM Websphere Server. Normally I use jstat tool from the JDK but since that's not available with IBM WAS, is there any other tool available for the same?
WAS uses IBM's J9 JVM under the hood. So, some of the HotSpot JVM's debugging tool will not work with it. WAS exposes all details using Performance Monitoring Infrastucture(PMI). You should be able to get lots of metrics using it. You need to enable this feature in order to get metrics.
Can we build commercial apps using the IBM Worklight free Developer Edition?
I searched the IBM official site and I sensed that we have to buy the license to develop commercial apps. But, can someone please clarify it?
Legally speaking: No, you cannot.
Non-Production Limitation
The Program can only be deployed as part of the Licensee's internal
development and test environment for internal non-production
activities, including but not limited to testing, performance tuning,
fault diagnosis, internal benchmarking, staging, quality assurance
activity and/or developing internally used additions or extensions to
the Program using published application programming interfaces.
Licensee is not authorized to use any part of the Program for any
other purposes without acquiring the appropriate production
entitlements.
Technically speaking: you could create an application that does not utilize Worklight features that in order to use them in a production environment, you'd have to buy the Consumer or Enterprise Edition of IBM Worklight.
By doing so you will lose:
The ability to install Worklight Server on an application server
The ability to utilize Worklight Adapters for backend connectivity, that rely on Worklight Server
The ability to secure your application using numerous built-in security features (application authenticity, device provisioning, ...)
The ability to manage your applications (notify, disable, ...)
The ability to remotely update (Direct Update) your applications
The ability to leverage Worklight's unified Push Notifications
The ability to see operational analytics
... and the list goes on.
Instead, you will have to rely on AJAX requests and spend time on (re-)implementing various aspects required for an application (but that's also of course depending on the scope and purpose of the application).
Also see:
https://stackoverflow.com/questions/17030963/ibm-worklight-license-is-worklight-free-to-use/17031953#17031953
IBM Worklight - Limitations of Worklight Studio for Developers
For any inquiries about Worklight I would suggest to contact IBM:
https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=raq&S_TACT=109HE02W&lang=en_US
I would like to attach to a WebSphere JVM and obtain useful data like garbage collectors' names and their collection counts, thread counts, heap/non-heap memory usage, JVM uptime etc. However, this link gives the list of MBeans available with the WebSphere JVM -
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.javadoc.wsfep.doc%2Fweb%2FmbeanDocs%2Findex.html
These MBeans don't seem to offer any data that I require. Is there any other way to obtain the data? I shall be using JMX to gather it.
If you're a corporate with bucks to spend I would suggest a product like Wily Introscope which runs an agent along with your JVM to collect all the metrics that you are after. I have used it with Websphere servers. Searching for an Open Source alternative I came across GlassBox which may provide a low cost alternative for you.
I'm not aware of any default MBeans that will provide the coverage you're after. It's typically the big Java vendors that provide this type of functionality.
[Update]
Having done something recently using VisualVM with Websphere 7, for the purposes of real-time monitoring/troubleshooting, I thought I would share my knowledge. VisualVM comes with the standard Sun JDK and you will find it installed here: JAVA_HOME\bin\jvisualvm.exe
To enable the JRE in Websphere to allow VisualVM to connect you must add the following JVM parameters using the Websphere Admin Console
Go To: Application Servers > [server_name] > Java and Process Management > Process definition > Java Virtual Machine > Generic JVM arguments
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.local.only=false
Make sure that the port number you have chosen above is not already in use
netstat -ap | grep 1099
Restart the server and you will be able to connect using VisualVM to see Uptime, Threads, Heap and GC profiles.
I see that Sun have also documented how you can write your own Java JMX client to read these values.
You could go with the suggestions provided by Brad and Andreas.
I would like to give you some insights into some of the tools that should be explored
(1) Tivoli Performance Viewer. This should provide some information about the JVM.
(2) IBM Health Center -> http://www.ibm.com/developerworks/java/jdk/tools/healthcenter/
Both of these should provide you a lot of info that you require.
Try them out
The JVM statistics are provided by the platform MXBeans. If you need to collect this data over a short period of time, then you could use a tool such as VisualVM. It's a bit tricky to configure this to connect to a WebSphere instance, but it is possible. One way to do that (there are other options) is described here:
http://code.google.com/p/xm4was/wiki/VisualVMHowTo
If you want to collect the data over a longer period of time, then you need a monitoring system. At work, I wrote a plugin for the Open Source RHQ enterprise management system that adds support for WebSphere. I'm in the process of releasing this plugin as an Open Source project, but at the time of writing, I have not yet published the documentation and there is also no downloadable release yet. Only the source code is available right now. I will try to complete that in the next weeks. If you are interested in this project, please let me know.
It is required to configure management.properties in 'jre_home\lib\management' to enable remote monitoring. But even after configuring the required properties below
com.sun.management.jmxremote.port=<portNum>
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
I was not able to connect to remote JVM with the : given using JConsole or JVisualVM. So in addition to this configuration do I need to make any code changes to enable remote JVM profiling (like creating a JMX server)?
Since i'm configuring management.properties, that will affect all java application using that JRE. So in that context how can profile each application?
So in summary, is it possible to profile a remote JVM by configuring some properties and not making any code changes?
What version of JDK do you use? In pre JDK 1.6 version you should specify -Dcom.sun.management.jmxremote or -Dcom.sun.management.jmxremote.port in the application you want to monitor with JConsole.
In JDK 1.6 it should work unless you specify -XX:-DisableAttachMechanism.
Azure and EC2 are optimized for running servers. Lots and lots of servers. Both platforms attempt to manage tons of things for you -- in Azure's case, it wants to manage even the target operating system.
However, I'd like to use such a service for a different reason: Testing.
I've got a ton of operating systems I need to support. My tests don't actually take that long, but running them on every platform is time consuming. I was going to just use a cloud service for this, thinking that these machines would be running for much less than an hour, and it wouldn't cost all that much.
The problem is that the major cloud services won't run client versions of Windows -- Windows Server only.
Is there a cloud service which would let me run every client and server version, and every service pack level, of Windows released starting with Windows 2000 SP4 to the present day?
Try CloudSigma, Defiantly can upload your own ISO's and run any x86 and 64bit OS you like on it. They have their in-house versions to get started but you can bring your own OS versions.
Based in Switzerland but they would have also the servers in the US, performance i've expected to quite good.
https://www.cloudsigma.com/
There is also a free trail on at the moment
https://cs.cloudsigma.com/accounts/signup/
The list of Open Virtualization Alliance members may have some candidates for you.
A search on the page for "operating system" suggests the following possibilities (in addition to the already-mentioned CloudSigma):
ElasticHosts
stepping stone GmbH (I'm less sure about this one)
Sublime IP
No, commercial cloud services like Azure and Amazon EC2 are themselves virtual, so you don't get a great deal of control over the operating system.
An option may be to consider renting a full physical server (colocated, or managed) and then use a battery of virtual machines to run the tests. Something like VMWare's snapshot feature sounds perfect: spin up a clean virtual machine, deploy the test code, then throw away changes to the disk once the tests have been completed.
Or, indeed, as #Stuart suggests - run the tests locally.
This definitely isn't something Azure offers - I think all of Azure's images are based near to Windows Server 2008 R2.
For EC2 you could set up images for Server 2003 through to 2008R2 - but nothing else. There are also some services out there to assist with this - e.g. VaasNet http://www.vaasnet.com/catalog
For testing the other Windows operating systems, I simply don't think there's a cloud service available to let you do this. I don't even think there are any cloud services where you can run "Virtual PC" type applications on top of the hosted operating system - as I think most of the virtualization APIs are disabled in the cloud environments (virtualization within virtualization not supported!)
Sorry to say this, but your best bet may be local test hardware running VirtualPC images.
It appears that the Xen Cloud Platform might do what you're after. This page ends with:
Guest Operating Systems: the XCP binary distribution is delivered with a wide range of Linux and Widnows guests. Check out the release notes for a complete list.
And their PDF document Xen Cloud Platform Virtual Machine Installation Guide (Release 0.1, Published October 2009) says that Windows 2000 Server has "No known issues."
(I don't have any affiliation with Xen)
In conjunction with the above, there is also a list of Xen VirtualPrivateServerProviders, several of which say they include Windows.
Buy time on an EC2 instance and use it to host VirtualBox VMs with VMs set up for each operating system you want to test for. Use a RDP client or VNC or some other means to control the guest OS. This forum post seems to point to that being possible. But yes it is not a cloud service itself and you would have todo some initial setup and configuration work yourself.