Poller takes longer time to complete

i just setup Librenms with 1 minute polling.
i am monitoring 10 devices now…
i did setup based on the recommendation from Performance - LibreNMS Docs except dns…

for one of the ex4200 switch stack (2 switch stach ) which is located at 250ms away, it is taking almost 3 minutes to get the polling completed… Any way to increase the performance…
below is my config.php config… is it expected behaviour?

$config['snmp']['max_repeaters'] = 50;         #We need reduce it if there is any timeout from the device
$config['snmp']['max_oid'] = 20;
$config['polling']['selected_ports'] = true;
#fping tuning
#fping is used to check the connectivity to the device
$config['fping_options']['timeout'] = 300;
$config['fping_options']['count']   = 1;            #default is 3 packets
$config['fping_options']['interval'] = 300;

#GUI Setting
$config['site_style']       = "light";
#$config['webui']['custom_css'][]       = "css/custom/styles.css";
#$config['title_image'] = "images/custom/yourlogo.png";

# There are mode neeed to check

#bad interfaces to be ignored
$config['bad_if'][] = "voip-null";
$config['bad_iftype'][] = "voiceEncap";
$config['bad_if'][] = "fxp0";
$config['bad_if'][] = "tap";
$config['bad_if'][] = "gre";
$config['bad_if'][] = "ipip";
$config['bad_if'][] = "pime";
$config['bad_if'][] = "pimd";
$config['bad_if'][] = "mtun";
$config['bad_if'][] = "rbeb";
$config['bad_if'][] = "cbp0";
$config['bad_if'][] = "pip0";
$config['bad_if'][] = "demux0";
$config['bad_if'][] = "vtep";
$config['bad_if'][] = "est";
$config['bad_if'][] = "esi";
$config['bad_if'][] = "pp0";
$config['bad_if'][] = "Null0";
$config['bad_if'][] = "dsc";
$config['bad_if_regexp'][] = '/^lo[0-9].*/';    // loopback
$config['bad_if_regexp'][] = '/^jsrv/';
$config['bad_if_regexp'][] = '/^fti[0-9]/';
$config['bad_if_regexp'][] = '/^lc-/';
$config['bad_if_regexp'][] = '/^pd-/';
$config['bad_if_regexp'][] = '/^ip-/';
$config['bad_if_regexp'][] = '/^vt-/';
$config['bad_if_regexp'][] = '/^mt-/';
$config['bad_if_regexp'][] = '/^lt-/';
$config['bad_if_regexp'][] = '/^ut-/';
$config['bad_if_regexp'][] = '/^ud-/';
$config['bad_if_regexp'][] = '/^ic-/';
$config['bad_if_regexp'][] = '/^pfh-/';
$config['bad_if_regexp'][] = '/^pfe-/';
$config['bad_if_regexp'][] = '/^pe-/';
$config['bad_ifalias_regexp'][] = '/free/';

#disable modules
$config['poller_modules']['ospf']                    = false;
$config['poller_modules']['wireless']                = false;
$config['poller_modules']['ipmi']                    = false;
$config['poller_modules']['ipv6-addresses']          = false;
$config['poller_modules']['applications']            = false;
$config['poller_modules']['unix-agent']              = false;
$config['poller_modules']['junose-atm-vp']           = false;
$config['poller_modules']['wifi']                    = false;
$config['poller_modules']['cisco-ace-loadbalancer']  = false;
$config['poller_modules']['cisco-ace-serverfarms']   = false;
$config['poller_modules']['netscaler-vsvr']          = false;
$config['poller_modules']['aruba-controller']        = false;
$config['poller_modules']['applications']            = false;
$config['poller_modules']['cisco-asa-firewall']      = false;
$config['discovery_modules']['ipv6-addresses']       = false;
$config['discovery_modules']['wireless']             = false;
$config['discovery_modules']['vmware-vminfo']        = false;
$config['discovery_modules']['stp']                  = false;
$config['discovery_modules']['junose-atm-vp']        = false;
$config['rrdtool_version'] = '1.7.1';
$config['rrdcached'] = "unix:/run/rrdcached.sock";

Well…As by your graph, the ports module takes all the time.

Try ./poller.php -d -h host -m ports and see how many time does it take to complete.

If your device takes more than a min to return all data, LibreNMS cant do anything on that :frowning:

>> Runtime for poller module 'ports': 352.8333 seconds with 1988336 bytes
>> SNMP: [562/351.85s] MySQL: [405/0.32s] RRD: [370/0.07s]
#### Unload poller module ports ####

./poller.php sw3.bom2 2019-03-25 04:28:00 - 1 devices polled in 355.0 secs
SNMP [565/353.53s]: Get[558/328.20s] Getnext[0/0.00s] Walk[7/25.34s]
MySQL [413/0.32s]: Cell[2/0.00s] Row[-2/-0.00s] Rows[4/0.02s] Column[1/0.00s] Update[405/0.30s] Insert[3/0.00s] Delete[0/0.00s]
RRD [378/0.07s]: Update[189/0.02s] Create [0/0.00s] Other[189/0.05s]

Above is what i got… also i noticed poller is running the below command for each interface and waits for the reply and starts the second interface… Can it do bulkwalk for the same.

SQL[UPDATE `ports_statistics` set `ifInNUcastPkts`=?,`ifInNUcastPkts_prev`=?,`ifInNUcastPkts_rate`=?,`ifInNUcastPkts_delta`=?,`ifOutNUcastPkts`=?,`ifOutNUcastPkts_prev`=?,`ifOutNUcastPkts_rate`=?,`ifOutNUcastPkts_delta`=?,`ifInDiscards`=?,`ifInDiscards_prev`=?,`ifInDiscards_rate`=?,`ifInDiscards_delta`=?,`ifOutDiscards`=?,`ifOutDiscards_prev`=?,`ifOutDiscards_rate`=?,`ifOutDiscards_delta`=?,`ifInUnknownProtos`=?,`ifInUnknownProtos_prev`=?,`ifInUnknownProtos_rate`=?,`ifInUnknownProtos_delta`=?,`ifInBroadcastPkts`=?,`ifInBroadcastPkts_prev`=?,`ifInBroadcastPkts_rate`=?,`ifInBroadcastPkts_delta`=?,`ifOutBroadcastPkts`=?,`ifOutBroadcastPkts_prev`=?,`ifOutBroadcastPkts_rate`=?,`ifOutBroadcastPkts_delta`=?,`ifInMulticastPkts`=?,`ifInMulticastPkts_prev`=?,`ifInMulticastPkts_rate`=?,`ifInMulticastPkts_delta`=?,`ifOutMulticastPkts`=?,`ifOutMulticastPkts_prev`=?,`ifOutMulticastPkts_rate`=?,`ifOutMulticastPkts_delta`=? WHERE `port_id` = ? ["0",0,0,0,"0",0,0,0,"0",0,0,0,"0",0,0,0,0,0,0,0,"0",0,0,0,"0",0,0,0,"0",0,0,0,"0",0,0,0,1035] 0.36ms]

any way to optimise this?