Time to Move Openfire to CentOS
-
It seems our install of Openfire on an older Server 2003 machine has finally gone haywire. There were no errors in the application or system logs on this server that would indicate a failure. Openfire logs are full of Java errors like this:
2015.02.04 07:48:20 org.jivesoftware.openfire.group.AbstractGroupProvider - ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from the last attempt is as follows: java.sql.SQLException: We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10
java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from the last attempt is as follows: java.sql.SQLException: We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10
at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:151)
at org.jivesoftware.openfire.group.AbstractGroupProvider.getVisibleGroupNames(AbstractGroupProvider.java:184)
at org.jivesoftware.openfire.group.AbstractGroupProvider.getSharedGroupNames(AbstractGroupProvider.java:172)
at org.jivesoftware.openfire.group.GroupManager.getSharedGroups(GroupManager.java:458)
at org.jivesoftware.openfire.roster.RosterManager.getSharedGroups(RosterManager.java:190)
at org.jivesoftware.openfire.roster.Roster.<init>(Roster.java:128)
at org.jivesoftware.openfire.roster.RosterManager.getRoster(RosterManager.java:116)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.broadcastUpdate(PresenceUpdateHandler.java:305)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:147)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:135)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:199)
at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:148)
at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:84)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84)
at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java:355)
at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaHandler.java:100)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:272)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:181)
at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:185)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:239)
at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:283)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.lang.Thread.run(Unknown Source)I did try patching current to the Openfire 3.9.3 version with JRE, but the same errors are there in C:\Program Files\Openfire\logs. The Openfire service will start, but you cannot login to the admin console - http://openfireserver:9090. The service actually stops shortly thereafter. I can verify there have been no Windows updates on this machine which may have caused the issue.
Since this machine was a Windows 2003 box anyway, I feel like it is best to abandon ship and just install Openfire on CentOS. It was slightly buggy in terms of performance as well.
So I was about to spin up a CentOS VM and go for it when I found this - http://www.osboxes.org/centos/. Has anyone used these images to spin up a CentOS box on VMWare, or is it best to install from scratch?
I figured I would get a CentOS VM going, patch it current, and then install and reconfigure Openfire using rpm as they say you can.
-
@NetworkNerd said:
So I was about to spin up a CentOS VM and go for it when I found this - http://www.osboxes.org/centos/. Has anyone used these images to spin up a CentOS box on VMWare, or is it best to install from scratch?
I use Hyper-V so I had not seen those. Assuming they are clean, I do like packaged systems because it saves the initial install steps.
But installing CentOS 7 minimal takes very little time once you have the ISO on your datastore.
-
Couldn't you technically follow @scottalanmiller's tutorial on scottalanmiller.com for installing Elastix on CentOS and then just use the OpenFire portion? Just one thought...
-
Seems like the general install is fairly straight forward:
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install-guide.html -
@thanksaj said:
Couldn't you technically follow @scottalanmiller's tutorial on scottalanmiller.com for installing Elastix on CentOS and then just use the OpenFire portion? Just one thought...
I would not do that. Its an old version of OpenFire and your system is full of packages that you don't need and an old version of CentOS. Way better to install a vanilla system and just run the OpenFire RPM. No extra stuff laying around, potentially causing problems.
-
OpenFire is an easy install, not bad at all. It's all packaged up and testing on Linux already.
-
I've done a lot of OpenFire on CentOS. Very simple install.
-
@NetworkNerd What client are you using with Openfire?
-
@coliver said:
@NetworkNerd What client are you using with Openfire?
We are using Spark. Thus far it has worked pretty well for us. I know you can use other XMPP clients but have not explored them much.
-
@NetworkNerd said:
@coliver said:
@NetworkNerd What client are you using with Openfire?
We are using Spark. Thus far it has worked pretty well for us. I know you can use other XMPP clients but have not explored them much.
I've never really jumped into XMPP/jabber so I'm just feeling to waters. Spark looks like a very manageable solution though. I'm trying to figure out how chat would work in our organization since most people work out of the same office.
-
@NetworkNerd said:
@coliver said:
@NetworkNerd What client are you using with Openfire?
We are using Spark. Thus far it has worked pretty well for us. I know you can use other XMPP clients but have not explored them much.
I like Spark quite a bit but the requirement to have Java for it sucks big time. They need to make a C# or F# native .NET client for Windows and get on with it. No one uses Spark on anything but Windows, Java makes no sense.
-
@coliver said:
I've never really jumped into XMPP/jabber so I'm just feeling to waters. Spark looks like a very manageable solution though. I'm trying to figure out how chat would work in our organization since most people work out of the same office.
It's pretty awesome. XMPP is very nice and since it is free and you can control everything it is hard to go wrong. Although these days I would be tempted to just put people on HipChat, it's free and hosted by Atlassian.
NTG uses HipChat just for the developers. Change uses it too.
-
@scottalanmiller said:
@coliver said:
I've never really jumped into XMPP/jabber so I'm just feeling to waters. Spark looks like a very manageable solution though. I'm trying to figure out how chat would work in our organization since most people work out of the same office.
It's pretty awesome. XMPP is very nice and since it is free and you can control everything it is hard to go wrong. Although these days I would be tempted to just put people on HipChat, it's free and hosted by Atlassian.
NTG uses HipChat just for the developers. Change uses it too.
Is there any concern that the chats are not archived somewhere in case management needed to review? Or are they archived for that sort of thing.
-
@NetworkNerd said:
NTG uses HipChat just for the developers. Change uses it too.
Is there any concern that the chats are not archived somewhere in case management needed to review? Or are they archived for that sort of thing.
You can pay for archiving. Most companies do not want archiving. Archiving bring in legal overhead that most want to avoid.
-
@scottalanmiller said:
I've done a lot of OpenFire on CentOS. Very simple install.
Do you see any issues from using the built-in database that you can select in the OpenFire GUI?
-
You really only choose something else if you want to scale more. The built in one is pretty limited. It's the same as using SQLite, basically. MySQL is what people use when they want something more robust.