Disabling several pieces of Javascript to improve performance on large databases
- 
 Based upon the [URL=‘http://www.fogproject.org/wiki/index.php/Testimonials#Madison_Metropolitan_School_District.2C_Madison.2C_WI.2C_USA’]Testimonials page on the WIKI[/URL], our FOG deployment is about the largest out there, so I’m not sure how many others have run into the sluggishness on the web interface out of the box that we have. I just had to replicate a few changes we had done in the past after doing a total re-install on our server for Ubuntu 14.04 and FOG 1.0.1, so I figured this might be useful to others and belong somewhere other than a text file on my Dropbox. Host Search - Disable search while typing (Also affects group and image searches):
 [CODE]/var/www/fog/management/js/fog.js (depending on which distro you choose)#Replace 
 $this.keyup(function()
 {
 if (this.SearchTimer) clearTimeout(this.SearchTimer);this.SearchTimer = setTimeout(function() { PerformSearch(); }, Options.SearchDelay);#with 
 $this.keypress(function(e)
 {
 if(e.keyCode==13){
 if (this.SearchTimer) clearTimeout(this.SearchTimer);this.SearchTimer = setTimeout(function() { PerformSearch(); }, Options.SearchDelay); }[/CODE]
 Disable pinging of Host Search results:
 [CODE]/var/www/fog/management/js/fog.js (depending on which distro you choose)#COMMENT OUT THIS LINE
 $(‘.ping’, Container).fogPing();[/CODE]
 Disable Dashboard bandwidth graphs:
 [CODE]/var/www/fog/management/js/fog.dashboard.js (depending on which distro you choose)GraphBandwidth = $('#graph-bandwidth', '#content-inner'); GraphBandwidthFilterTransmit = $('#graph-bandwidth-filters-transmit', '#graph-bandwidth-filters'); GraphBandwidthFilterTransmitActive = GraphBandwidthFilterTransmit.hasClass('active'); // Bandwidth Graph - init plot GraphBandwidthPlot = $.plot(GraphBandwidth, [[0,0]], { 'colors': ['#7386AD', '#91a73c'], 'xaxis': { 'mode': 'time' }, 'yaxis': { 'min': '0', 'tickFormatter': function (v) { return v + ' MB/s'; } }, 'series': { 'lines': { 'show': true } }, 'legend': { show: false, } }); // Bandwidth Graph - TX/RX Filter $('#graph-bandwidth-filters-transmit, #graph-bandwidth-filters-receive', '#graph-bandwidth-filters').click(function() { // Blur -> add active class -> remove active class from old active item $(this).blur().addClass('active').siblings('a').removeClass('active'); // Update title $('#graph-bandwidth-title > span').eq(0).html($(this).html()); // Set variable GraphBandwidthFilterTransmitActive = (GraphBandwidthFilterTransmit.hasClass('active') ? true : false) // Update graph UpdateBandwidthGraph(); // Prevent default action return false; }); // Bandwidth Graph - Time Filter $('#graph-bandwidth-filters div:eq(2) a').click(function() { // Blur -> add active class -> remove active class from old active item $(this).blur().addClass('active').siblings('a').removeClass('active'); // Update title $('#graph-bandwidth-title > span').eq(1).html($(this).html()); // Update max data points variable GraphBandwidthMaxDataPoints = $(this).attr('rel'); // Update graph UpdateBandwidthGraph(); // Prevent default action return false; }); // Bandwidth Graph - start thread setTimeout(function() { UpdateBandwidth(); }, (200));[/CODE]Before applying these changes, the web interface was generally slow and unstable and mysql and/or apache would be pegging at least one CPU core and using a lot of memory. After making the above changes, memory usage is about ~1GB or under, CPU usage is fairly light, and the web interface is fast and completely usable. 
- 
 I’ve added these files to the svn trunk. I’m not using them directly, but a simple mv the other files to backup names and renaming of these files as their respective counterparts will work. 
- 
 Sweet! I did still have some other slowness after this when modifying larger groups, I’ve been tweaking MySQL settings in my.cnf to alleviate that. Here’s my most recent version, this would vary somewhat depending on the beefiness of your server’s hardware. [CODE]# The MySQL database server configuration file.You can copy this to one of:- “/etc/mysql/my.cnf” to set global options,- “~/.my.cnf” to set user-specific options.One can use all long options that the program supports.Run program with --help to get a list of available options and with–print-defaults to see which it would actually understand and use.For explanations seehttp://dev.mysql.com/doc/mysql/en/server-system-variables.htmlThis will be passed to all mysql clientsIt has been reported that passwords should be enclosed with ticks/quotesescpecially if they contain “#” chars…Remember to edit /etc/mysql/debian.cnf when changing the socket location.[client] 
 port = 3306
 socket = /var/run/mysqld/mysqld.sockHere is entries for some specific programsThe following values assume you have at least 32M ramThis was formally known as [safe_mysqld]. Both versions are currently parsed.[mysqld_safe] 
 socket = /var/run/mysqld/mysqld.sock
 nice = 0[mysqld] * Basic Settingsuser = mysql 
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 port = 3306
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-lockingInstead of skip-networking the default is now to listen only onlocalhost which is more compatible and is not less secure.bind-address = 127.0.0.1 * Fine Tuningtmp_table_size = 128M 
 max_heap_table_size = 128M
 key_buffer = 16M
 max_allowed_packet = 16M
 thread_stack = 192K
 thread_cache_size = 8This replaces the startup script and checks MyISAM tables if neededthe first time they are touchedmyisam-recover = BACKUP 
 max_connections = 500
 #table_cache = 64
 thread_concurrency = 16* Query Cache Configurationquery_cache_limit = 1M 
 query_cache_size = 64M* Logging and ReplicationBoth location gets rotated by the cronjob.Be aware that this log type is a performance killer.As of 5.1 you can enable the log at runtime!#general_log_file = /var/log/mysql/mysql.log 
 #general_log = 1Error log - should be very few entries.log_error = /var/log/mysql/error.log Here you can see queries with especially long duration#log_slow_queries = /var/log/mysql/mysql-slow.log 
 #long_query_time = 2
 #log-queries-not-using-indexesThe following can be used as easy to replay backup logs or for replication.note: if you are setting up a replication slave, see README.Debian aboutother settings you may need to change.#server-id = 1 
 #log_bin = /var/log/mysql/mysql-bin.log
 expire_logs_days = 10
 max_binlog_size = 100M
 slow-query-log = 1
 slow-query-log-file = /var/log/mysql/mysql-slow.log
 #binlog_do_db = include_database_name
 #binlog_ignore_db = include_database_name* InnoDBInnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.Read the manual for more InnoDB related options. There are many!* Security FeaturesRead the manual, too, if you want chroot!chroot = /var/lib/mysql/For generating SSL certificates I recommend the OpenSSL GUI “tinyca”.ssl-ca=/etc/mysql/cacert.pemssl-cert=/etc/mysql/server-cert.pemssl-key=/etc/mysql/server-key.pem[mysqldump] 
 quick
 quote-names
 max_allowed_packet = 16M[mysql] 
 #no-auto-rehash # faster start of mysql but no tab completition[isamchk] 
 key_buffer = 512M* IMPORTANT: Additional settings that can override those from this file!The files must end with ‘.cnf’, otherwise they’ll be ignored.!includedir /etc/mysql/conf.d/[/CODE] I imagine some of my performance issues have to do with choosing to install on Ubuntu 14.04? I’ve seen the talk of it being a problem, but haven’t seen anyone list anything specific. 
- 
 Some more help in speeding up your interface could be to disabling the animation effects in: FOG Configuration->FOG Settings->General Settings->FOG_USE_ANIMATION_EFFECTS Uncheck the box and save. Enjoy the speed increase. 
- 
 Somewhat old thread, but you can disable the ping on the host lists by going to FOG Configuration->FOG Settings->General Settings->FOG_HOST_LOOKUP and clearing the checkbox. Easier than disabling the javascript file. There’s a possibility this was introduced in the time between your post and my find, but if not, it’s here for others. 
