What is SFCB and how to debug it.

  • 7010296
  • 12-Mar-2012
  • 24-Aug-2015

Environment

Novell Open Enterprise Server 11 (OES 11) Linux
Novell Open Enterprise Server 11 (OES 11) Linux Support Pack 1
Novell Open Enterprise Server 11 (OES 11) Linux Support Pack 2

Resolution

What is SFCB?
OpenWBEM has now been replaced with Small Footprint CIM Broker (SFCB) as the Web‐Based
Enterprise Management system in OES11.

Does SFCB need to be a LUM-enabled service?
This is selected by default because it is used by many of the OES services such as NSS,
SMS, Novell Remote Manager, and Samba. To access iManager and NRM, you must
enable SFCB.

Which ports are being used by SFCB?
5988 (HTTP) - disabled by default.
5989 (secure HTTP)

Where are the configuration files?
/etc/sfcb/sfcb.cfg

How to enable debug logging for the sfcb daemon?
You can start /usr/sbin/sfcbd in tracing mode (not daemon mode -d) and it will send the tracing mask messages to the console.  Depending on the mask you use, a lot of messages get written and can be difficult to debug.  I've found it easier to modify the conf file method described below.
Settings in the /etc/sfcb/sfcb.cfg
# I like writing to a file specific to sfcb as it will grow very fast depending on you trace mask
#traceFile: stderr
traceFile: /tmp/sfcb.log

## Trace mask as an ORed bitmask.
## Can be overriden by the command line option -t.  Use "-t ?" for details.
## Default is 0
#traceMask: 0
traceMask: 0x0004000      ## traces only sockets
# traceMask: 0x01FFFFF   ## would trace everything

## Trace level.
## Can be overriden by setting environment variable SFCB_TRACE_LEVEL.
## Default is 0. If trace mask is set (by any method) the default is 1.
#traceLevel: 0
traceLevel: 1

To figure out which tracing options you want, you can run the following command which prints out the bitmask of traceable components which can be ORed together to get your trace mask value.  The value can be either decimal or hex. 
/usr/sbin # sfcbd -t?
---   Traceable Components:   Int       Hex
---   providerMgr:                     1    0x0000001
---   providerDrv:                     2    0x0000002
---   cimxmlProc:                     4    0x0000004
---   httpDaemon:                    8    0x0000008
---   upCalls:                          16    0x0000010
---   encCalls:                         32    0x0000020
---   ProviderInstMgr:              64    0x0000040
---   ProviderAssocMgr:         128    0x0000080
---   providers:                      256    0x0000100
---   indProvider:                   512    0x0000200
---   internalProvider:          1024    0x0000400
---   objectImpl:                   2048    0x0000800
---   xmlIn:                          4096    0x0001000
---   xmlOut:                       8192    0x0002000
---   sockets:                     16384    0x0004000
---   memoryMgr:              32768    0x0008000
---   msgQueue:                65536    0x0010000
---   xmlParsing:              131072    0x0020000
---   responseTiming:       262144    0x0040000
---   dbpdaemon:             524288    0x0080000
---   slp:                         1048576    0x0100000

Once the /etc/sfcb/sfcb.cfg file has been modified and saved, restart sfcb to take on the new settings.  Example: rcsfcb restart

Do you have to increase the number of threads sfcb uses?
Yes. In a large cluster environment you may need to increase these.
Monitor the threads and if needed, increase the https threads setting in
/etc/sfcb/sfcb.cfg
# Increase https threads
httpsProcs:     30

Additional Information

Commands which can be helpful in monitoring or debugging sfcb.
This shows you the sockets being created.
watch -n 1 "netstat -ant | grep 5989"

This shows you how many threads sfcb is using.
watch -n 1 echo "SFCB threads:;""ps -eT | grep sfcb | wc -l"