Saturday, March 10, 2012

Weblogic on Linux x86-64 libmuxer Library Error (BEA-280101)

In this post, I will be discussing the Java I/O and performance pack error that is seen in the admin logs of Weblogic. This is Weblogic 10.3.5 on RedHat Linux 5.5 64 bit.


Error:



<Jan 5, 2012 8:10:20 AM PST> <Error> <Socket> <BEA-000438> <Unable to load performance pack. Using Java I/O instead. Please ensure that libmuxer library is in :
####<Jan 5, 2012 8:52:29 AM PST>  <Warning> <Store> <BEA-280101> <amghost1.cup.com> <WLS_Portlet> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1325782349291> <BEA-280101> <The persistent file store "_WLS_WLS_Portlet" is forced to use buffered I/O and so may have significantly degraded performance. Either the OS/hardware environment does not support the chosen write policy or the native wlfileio library is missing. See store open log messages for the requested and final write policies. See the documentation on store synchronous write policy configuration for advice.

Cause:

There are  some libraray those exist in the $WL_HOME/server/native/linux/x86_64 and the Weblogic start is looking those to be in the CLASSPATH. Since the default CLASSPATH (After a Fresh Install) does not have above path, it is looking the libmuxer library in i686 directory. This may be fine if you are running in a  32 bit OS  but on 64 it is in a different place.

Solution:

I had  two options - one - copy those libraries to the path that is available to CLASSPATH - two - add the new path.

I decided the later and changed the CLASSPATH in the environment file as:

From:

LD_LIBRARY_PATH="${WL_HOME}/server/native/linux/i686${CLASSPATHSEP}${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH

TO:

LD_LIBRARY_PATH="${WL_HOME}/server/native/linux/x86_64${CLASSPATHSEP}${WL_HOME}/server/native/linux/i686${CLASSPATHSEP}${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH

After above change the result from the admin log is:


####<Jan 5, 2012 9:21:19 AM PST> <Info> <Socket> <ebiz1.cup.hp.com> <WLS_Portlet> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1325784079574> <BEA-000447> <Native IO Disabled. Using Java IO.>




4110978> <BEA-280008> <Opening the persistent file store "_WLS_WLS_Portlet" for recovery: directory=/home/oracle/SOA/Middleware/user_projects/domains/base_domain/servers/WLS_Portlet/data/store/default requestedWritePolicy="Direct-Write" fileLockingEnabled=true driver="wlfileio3".>

####<Jan 5, 2012 9:21:19 AM PST> <Info> <Socket> <ebiz1.cup.hp.com> <WLS_Portlet> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1325784079574> <BEA-000447> <Native IO Disabled. Using Java IO.>

Please Note that I also changed the I/O to Direct Write from the Admin Console and that is what is reflected here. I did this change because I noticed that this was better in this particular scenario whereas this is not recommended. I do not go with recommendations - I do my test and choose the setting that is appropriate to my environment. This was better here but cannot be used as a rule of thumb. Here the SAN and the latency was not that high. May be my volume was not that high. Please do some testing in the DEV environment and choose the best setting for your environment.

Issue Resolved !!

1 comment:

  1. what environment file did you edit?
    i mean for this things:

    LD_LIBRARY_PATH="${WL_HOME}/server/native/linux/i686${CLASSPATHSEP}${LD_LIBRARY_PATH}"
    export LD_LIBRARY_PATH

    TO:

    LD_LIBRARY_PATH="${WL_HOME}/server/native/linux/x86_64${CLASSPATHSEP}${WL_HOME}/server/native/linux/i686${CLASSPATHSEP}${LD_LIBRARY_PATH}"
    export LD_LIBRARY_PATH

    ReplyDelete