Posts Tagged ‘threads’

Cannot Delete file on Desktop on Windows XP – The process cannot access the file because it is being used by another process.

Wednesday, August 13th, 2014

delete-locked-file-in-windows-xp-7-cannot-delete-file-on-desktop-windows-xp-file-used-by-another-process-solution-fix
I had to fix recently another Windows XP infected with plenty of malicious malware. I've used tips from http://malwaretips.com/blogs/ and launch all suggested tools to cleanup the PC. Some few thousands of infections were cleaned and the PC started working much better than earlier, however still there was one weird issue on the Windows XP desktop there was an .exe file hanging with 0 bytes size and whenever I tried to delete the file either from GUI or command line with (del command) it refused to delete with error:
 

The process cannot access the file because it is being used by another process.


Well the message clearly shows, the file can't be deleted because some program was using it however I couldn't see any program that has locked the .exe file. I've checked that in (Windows Task Manager) run from

Start -> Run:

taskmgr


I've done a quick search online to see, whether someone has fixed the issues, and saw many threads talking about the issue suggesting that the issue got solved Windows XP OS re-install, as this was not an option for me because the PC's reinstall would be at least a 2 day time work, plus it contains some programs which will probably be hard to freshly install, because they're no longed supported.

Finally I've seen in this thread suggestion to try to kill Windows Explorer after you have opened windows with windows cmd.exe because this will prevent the .exe file being locked by Windows Explorer and will allow it to be deleted with del command. This actually worked. I've launched

Start -> Run

taskmgr

windows-kill-explorer-process-to-delete-explorer-locked-file-on-windows-xp-desktop

and

cmd.exe

Found explorer.exe process and killed it, this makes the whole desktop (icons, start menu etc. disappear) – as Windows Explorer is main managing Windows app. Then using Alt+Tab to switch to Command Prompt window deleted it with:
 

del  Process_that_cannot_be_killed.exe


And finally succesfully deleted it 🙂

Make MySQL existing users to have access from any or particular host after SQL migration

Tuesday, July 1st, 2014

make_mysql_existing_users_have-access-from-any-or-particular-host-after-SQL-migration
Recently I've done a migration of MySQL server from host A (running and configured to serve requests on (localhost – 127.0.0.1) to host B (server2.host.com)
There are already existing users in mysql which are allowed to only access the database server from localhost as until now the applciation was sending SQL queries straight on localhost. Now the architecture has to change to use the MySQL Database remotely.

Hence I've migrated the MySQL server by dumping all the existing the databases on MySQL host A  with:

mysqldump -u root -p --all-databases > alldbs_dump.sql


And then importing the databases on host B with

mysql -u root -p < alldbs_dump.sql

Though this migrated the data from Host A to Host B, still the application on Host A was failing to succesfully use its data from database on Host B, because of inability to properly authenticate. It couldn't authenticate because MySQL on Host B's users are not configured to have access from IP address of Host A, but only allowed the application users to be able to connect on localhost..

I've used following SQL CLI query to check Hosts allowed to connect to MySQL (in this case localhost):

# mysql -u root -p
mysql> use mysql;
mysql> select * from user where user like '%eameiotest%' and Host='localhost';

To fix that I logged on MySQL server on Host B with mysql cli and issued for each of the users the application was using:

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest';
 

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest2';
 

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest3';

On execution, If you get errors like:
 

ERROR 1062 (23000): Duplicate entry '%-eameiotest' for key 'PRIMARY'


Don't think that there is no solution, as I've read some threads online claiming the only way to get around this issue is to dump mysql database and re-import it, this is not necessery. There is a work around to this MySQL bug.

To work-around the error, you will first have to set the user allowed access host to empty – ' ' :

UPDATE mysql.user SET Host='' WHERE Host='localhost' AND User='eameiotest';
 

UPDATE mysql.user SET Host='' WHERE Host='localhost' AND User='eameiotest2';
 

UPDATE mysql.user SET Host='' WHERE Host='localhost' AND User='eameiotest3';


And re-issue again commands:
 

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest';
 

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest2';
 

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='eameiotest3';


You might want to also issue:
 

GRANT ALL PRIVILEGES ON yourdatabase-name.* TO 'eameiotest1'@'server-host';

GRANT ALL PRIVILEGES ON yourdatabase-name.* TO 'eameiotest2'@'server-host';

GRANT ALL PRIVILEGES ON yourdatabase-name.* TO 'eameiotest3'@'server-host';
 

This should have solve the app connection issues, Cheers 🙂

Best Windows tools to Test (Benchmark) Hard Drives, SSD Drives and RAID Storage Controllers

Wednesday, April 23rd, 2014

atto-windows-hard-disk-benchmark-freeware-tool-screenshot-check-hard-disk-speed-windows
Disk Benchmarking is very useful for people involved in Graphic Design, 3D modelling, system admins  and anyone willing to squeeze maximum of his PC hardware.

If you want to do some benchmarking on newly built Windows server targetting Hard Disk performance, just bought a new hard SSD (Solid State Drives) and you want to test how well Hard Drive I/O operations behave or you want to see a regular HDD benchmarking of group of MS Windows PCs and plan hardware optiomization, check out ATTO Disk Benchmark.

So why exactly ATTO Benchmark? – Cause it is one of the best Windows Free Benchmark tools on the internet.

ATTO is a widely-accepted Disk Benchmark freeware utility to help measure storage system performance. ATTO though being freeware is among top tools utilized in industry. It is very useful in comparing different Hard Disk vendors speed, measure Windows storage systems performance with various transfer sizes and test lengths for reads and writes.

ATTO Disk Benchmark is used by manufacturers of Hardware RAID controllers, its precious tool to test Windows storage controllers, host bus adapters (HBAs).

Here is ATTO Benchmark tool specifications (quote from their webstie):
 

  • Transfer sizes from 512KB to 8MB
  • Transfer lengths from 64KB to 2GB
  • Support for overlapped I/O
  • Supports a variety of queue depths
  • I/O comparisons with various test patterns
  • Timed mode allows continuous testing
  • Non-destructive performance measurement on formatted drives
  • Transfer sizes from 512KB to 8MB
  • Transfer lengths from 64KB to 2GB
  • Support for overlapped I/O
  • Supports a variety of queue depths
  • I/O comparisons with various test patterns
  • Timed mode allows continuous testing
  • Non-destructive performance measurement on formatted drives
  • – See more at: http://www.attotech.com/disk-benchmark/#sthash.rRlgSTOE.dpuf

Here is mirrored latest version of ATTO Disk for Download. Once you get your HDD statistics you will probably want to compare to other people results. On  TomsHardware's world famous Hardware geek site there are plenty of Hard Drives performance Charts

Of course there are other GUI alternatives to ATTO Benchmark one historically famous is NBench

NBench

nbench_benchmark_windows_hard-drive-cpu-and-memory

Nbench is nice little benchmarking program for Windows NT. Nbench reports the following components of performance:

CPU speed: integer and floating operations/sec
L1 and L2 cache speeds: MB/sec
main memory speed: MB/sec
disk read and write speeds: MB/sec

          SMP systems and multi-tasking OS efficiency can be tested using up to 20 separate threads of execution.

          For Console Geeks or Windows server admins there are also some ports of famous *NIX Hard Disk Benchmarking tools:

          NTiogen

          NTiogen benchmark was written by Symbios Logic, It's Windows NT port of their popular UNIX benchmark IOGEN. NTIOGEN is the parent processes that spawns the specified number of IOGEN processes that actually do the I/O.
          The program will display as output the number of processes, the average response time, the number of I/O operations per second, and the number of KBytes per second. You can download mirror copy of Ntiogen here


          There are plenty of other GUI and Console HDD Benchmarking Win Tools, i.e.:

          IOMeter (ex-developed by Intel and now abandoned available as open source available on SourceForge)

          iometer-benchmark-disk-storage-speed-windows
           

          Bench32 – Comprehensive benchmark that measures overall system performance under Windows NT or Windows 95, now obsolete not developed anymore abandoned by producer company.

          ThreadMark32 – capable of bench (ex developed and supported by ADAPTEC) but also already unsupported

          IOZone – filesystem benchmark tool. The benchmark generates and measures a variety of file operations. Iozone has been ported to many machines and runs under many operating systems.
           

          N! B! Important note to make here is above suggested tools will provide you more realistic results than the proprietary vendor tools shipped by your hardware vendor. Using proprietary software produced by a single vendor makes it impossible to analyze and compare different hardwares, above HDD benchmarking tools are for "open systems", e.g. nomatter what the hardware producer is produced results can be checked against each other.
          Another thing to consider is even though if you use any of above tools to test and compare two storage devices still results will be partially imaginary, its always best to conduct tests in Real Working Application Environments. If you're planning to launch a new services structure always test it first and don't rely on preliminary returned soft benchmarks.

          if you know some other useful benchmarking software i'm missing please share.

          How to record microphone input sound (only) using good old ffmpeg

          Tuesday, December 25th, 2012

          The good old ffmpeg, along with being able to capture sound and video from your Linux Desktop or a certain Window and Skype whatever WebCamera input is also able to record sound from both camera or embedded laptop microphone. Here is how:

          # ffmpeg -f alsa -ac 2 -i pulse   -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0  -y  myVOICE.wav

          This as you can see from arguments, uses GNOME's pulseaudio (audio service) and ALSA. Sound is first streamed through alsa and then the sound inflow is passed to be processed and multipled in a separate sound channel by pulseaudio. This method though said to be working fine on Ubuntu Linux is not working well on some other Linux distributions like Debian if one is using ALSA configured to use a software sound multiplexor via the so called – alsa dsnoop interface (previously I write how to use it in order to make Skype and other programs use SoundBlaster proper – article is here)

          Below is the output warning I got whether trying ffmpeg with -f alsa and -i pulse arguments:

          hipo@noah:~/Desktop$ ffmpeg -f alsa -ac 2 -i pulse   -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0  -y  myVOICE.wav
          FFmpeg version SVN-r25838, Copyright (c) 2000-2010 the FFmpeg developers
            built on Sep 20 2011 17:00:01 with gcc 4.4.5
            configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
            libavutil     50.33. 0 / 50.43. 0
            libavcore      0.14. 0 /  0.14. 0
            libavcodec    52.97. 2 / 52.97. 2
            libavformat   52.87. 1 / 52.87. 1
            libavdevice   52. 2. 2 / 52. 2. 2
            libavfilter    1.65. 0 /  1.65. 0
            libswscale     0.12. 0 /  0.14. 1
            libpostproc   51. 2. 0 / 51. 2. 0
          [alsa @ 0x633160] capture with some ALSA plugins, especially dsnoop, may hang.

          where concrete programs, are run which take use of OSS (Open Sound System) – an already obsolete sound architecture. By the way on current Debian / Fedora etc. Linux-es OSS is managed and played only, whether few kernel modules are already  pre-loaded, below are the ones as pasted from my Debian Squeeze:

          # lsmod | grep -i oss
          snd_pcm_oss            32591  0
          snd_mixer_oss          12606  1 snd_pcm_oss
          snd_pcm                60487  3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
          snd                    46526  15 snd_hda_codec_analog,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device

          The oss processed sound recording from ffmpeg is not working, well on my Linux, cause I have my custom (non-Debian) native binary Firefox downloaded and installed from Firefox's website.The browser is compiled to open automatically /dev/dsp which in practice uses the above-mentioned OSS listed modules, which on their behalf when used break out the sound processed by alsa and respectively pulseaudio (those who use Linux for longer time should remember in the times of OSS only one certain sound stream was possible to be processed / played on Linux historically before ALSA come to scene to be "defacto" standard kernel sound processor. Well ofcourse firefox developers who compiled the Firefox for Linux probably was using Slackware or some other Linux distro which probably used to play sound still via OSS or maybe they compiled it so thinking OSS because of its historical importance is still supported by more Linux distributions than alsa is. I like the custom compiled Firefox to run on my Debian instead of default Debian Squeeze (IceWeasel) cause firefox.org ,Firefox version is much newer and supports better latest HTML5  as well as it includes ability to download and apply automatic updates to the latest version provided by Firefox team. However I fou

          Thus for Linux users like me using latest firefox binary from firefox.org (in parallel) with opened Firefox browser to record sound from Webcam or Embedded notebook mic the obsolete OSS has to be used, here is how:

          # ffmpeg -f oss -ac 2 -i /dev/dsp   -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0  -y  my-recorder-VOICE.wav

          Enjoy 😉

          Fix “Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.” in FreeBSD

          Monday, May 21st, 2012

          bsdinstall-newboot-loader-menu-pv_entries_consider_increasing_vm_pmap_shpgrepproc

          I'm running FreeBSD with Apache and PHP on it and I got in dmesg (kernel log), following error:

          freebsd# dmesg|grep -i vm.pmap.shpgperproc
          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.
          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.
          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.
          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.
          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.

          The exact FreeBSD, Apache and php versions I have installed are:
           

          freebsd# uname -a ; httpd -V ; php –version
          FreeBSD pcfreak 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4 #0: Fri Oct 2 12:21:39 UTC 2009 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386
          Server version: Apache/2.0.64
          Server built: Mar 13 2011 23:36:25Server's Module Magic Number: 20050127:14
          Server loaded: APR 0.9.19, APR-UTIL 0.9.19
          Compiled using: APR 0.9.19, APR-UTIL 0.9.19
          Architecture: 32-bit
          Server compiled with….
          -D APACHE_MPM_DIR="server/mpm/prefork"
          -D APR_HAS_SENDFILE
          -D APR_HAS_MMAP
          -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
          -D APR_USE_FLOCK_SERIALIZE
          -D APR_USE_PTHREAD_SERIALIZE
          -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
          -D APR_HAS_OTHER_CHILD
          -D AP_HAVE_RELIABLE_PIPED_LOGS
          -D HTTPD_ROOT="/usr/local"
          -D SUEXEC_BIN="/usr/local/bin/suexec"
          -D DEFAULT_PIDLOG="/var/run/httpd.pid"
          -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
          -D DEFAULT_LOCKFILE="/var/run/accept.lock"
          -D DEFAULT_ERRORLOG="logs/error_log"
          -D AP_TYPES_CONFIG_FILE="etc/apache2/mime.types"
          -D SERVER_CONFIG_FILE="etc/apache2/httpd.conf"
          PHP 5.3.5 with Suhosin-Patch (cli) (built: Mar 14 2011 00:29:17)
          Copyright (c) 1997-2009 The PHP Group
          Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
          with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

          After a bunch of research a FreeBSD forums thread , I've found the fix suggested by a guy.

          The solution suggested in the forum is to raise up vm.pmap.pv_entry_ma to vm.pmap.pv_entry_max=1743504, however I've noticed this value is read only and cannot be changed on the BSD running kernel;

          freebsd# sysctl vm.pmap.pv_entry_max=1743504
          sysctl: oid 'vm.pmap.pv_entry_max' is read only

          Instead to solve the;

          Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.
          , I had to add in /boot/loader.conf

          vm.pmap.pde.mappings=68
          vm.pmap.shpgperproc=500
          vm.pmap.pv_entry_max=1743504

          Adding this values through /boot/loader.conf set them on kernel boot time. I've seen also in the threads the consider increasing either the vm.pmap.shpgperproc is also encountered on FreeBSD hosts running Squid, Dansguardion and other web proxy softwares on busy hosts.

          This problems are not likely to happen for people who are running latest FreeBSD releases (>8.3, 9.x), I've read in same above post in newer BSD kernels the vm.pmap is no longer existing in newer kernels.

          Monitoring MySQL server queries and debunning performance (slow query) issues with native MySQL commands and with mtop, mytop

          Thursday, May 10th, 2012

          If you're a Linux server administrator running MySQL server, you need to troubleshoot performance and bottleneck issues with the SQL database every now and then. In this article, I will pinpoint few methods to debug basic issues with MySQL database servers.

          1. Troubleshooting MySQL database queries with native SQL commands

          a)One way to debug errors and get general statistics is by logging in with mysql cli and check the mysql server status:

          # mysql -u root -p
          mysql> SHOW STATUS;
          +-----------------------------------+------------+
          | Variable_name | Value |
          +-----------------------------------+------------+
          | Aborted_clients | 1132 |
          | Aborted_connects | 58 |
          | Binlog_cache_disk_use | 185 |
          | Binlog_cache_use | 2542 |
          | Bytes_received | 115 |
          .....
          .....
          | Com_xa_start | 0 |
          | Compression | OFF |
          | Connections | 150000 |
          | Created_tmp_disk_tables | 0 |
          | Created_tmp_files | 221 |
          | Created_tmp_tables | 1 |
          | Delayed_errors | 0 |
          | Delayed_insert_threads | 0 |
          | Delayed_writes | 0 |
          | Flush_commands | 1 |
          .....
          .....
          | Handler_write | 132 |
          | Innodb_page_size | 16384 |
          | Innodb_pages_created | 6204 |
          | Innodb_pages_read | 8859 |
          | Innodb_pages_written | 21931 |
          .....
          .....
          | Slave_running | OFF |
          | Slow_launch_threads | 0 |
          | Slow_queries | 0 |
          | Sort_merge_passes | 0 |
          | Sort_range | 0 |
          | Sort_rows | 0 |
          | Sort_scan | 0 |
          | Table_locks_immediate | 4065218 |
          | Table_locks_waited | 196 |
          | Tc_log_max_pages_used | 0 |
          | Tc_log_page_size | 0 |
          | Tc_log_page_waits | 0 |
          | Threads_cached | 51 |
          | Threads_connected | 1 |
          | Threads_created | 52 |
          | Threads_running | 1 |
          | Uptime | 334856 |
          +-----------------------------------+------------+
          225 rows in set (0.00 sec)

          SHOW STATUS; command gives plenty of useful info, however it is not showing the exact list of queries currently processed by the SQL server. Therefore sometimes it is exactly a stucked (slow queries) execution, you need to debug in order to fix a lagging SQL. One way to track this slow queries is via enabling mysql slow-query.log. Anyways enabling the slow-query requires a MySQL server restart and some critical productive database servers are not so easy to restart and the SQL slow queries have to be tracked "on the fly" so to say.
          Therefore, to check the exact (slow) queries processed by the SQL server (without restarting it), do
           

          mysql> SHOW processlist;
          +——+——+—————+——+———+——+————–+——————————————————————————————————+
          | Id | User | Host | db | Command | Time | State | Info |
          +——+——+—————+——+———+——+————–+——————————————————————————————————+
          | 609 | root | localhost | blog | Sleep | 5 | | NULL |
          | 1258 | root | localhost | NULL | Sleep | 85 | | NULL |
          | 1308 | root | localhost | NULL | Query | 0 | NULL | show processlist |
          | 1310 | blog | pcfreak:64033 | blog | Query | 0 | Sending data | SELECT comment_author, comment_author_url, comment_content, comment_post_ID, comment_ID, comment_aut |
          +——+——+—————+——+———+——+————–+——————————————————————————————————+
          4 rows in set (0.00 sec)
          mysql>

          SHOW processlist gives a good view on what is happening inside the SQL.

          To get more complete information on SQL query threads use the full extra option:

          mysql> SHOW full processlist;

          This gives pretty full info on running threads, but unfortunately it is annoying to re-run the command again and again – constantly to press UP Arrow + Enter keys.

          Hence it is useful to get the same command output, refresh periodically every few seconds. This is possible by running it through the watch command:

          debian:~# watch "'show processlist' | mysql -u root -p'secret_password'"

          watch will run SHOW processlist every 2 secs (this is default watch refresh time, for other timing use watch -n 1, watch -n 10 etc. etc.

          The produced output will be similar to:

          Every 2.0s: echo 'show processlist' | mysql -u root -p'secret_password' Thu May 10 17:24:19 2012

          Id User Host db Command Time State Info
          609 root localhost blog Sleep 3 NULL1258 root localhost NULL Sleep 649 NULL1542 blog pcfreak:64981 blog Query 0 Copying to tmp table \
          SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, p.pos
          t_date, p.comment_count, count(t_r.o
          1543 root localhost NULL Query 0 NULL show processlist

          Though this "hack" is one of the possible ways to get some interactivity on what is happening inside SQL server databases and tables table. for administering hundred or thousand SQL servers running dozens of queries per second – monitor their behaviour few times aday using mytop or mtop is times easier.

          Though, the names of the two tools are quite similar and I used to think both tools are one and the same, actually they're not but both are suitable for monitoring sql database execution in real time.

          As a sys admin, I've used mytop and mtop, on almost each Linux server with MySQL server installed.
          Both tools has helped me many times in debugging oddities with sql servers. Therefore my personal view is mytop and mtop should be along with the Linux sysadmin most useful command tools outfit, still I'm sure many administrators still haven't heard about this nice goodies.

          1. Installing mytop on Debian, Ubuntu and other deb based GNU / Linux-es

          mytop is available for easy install on Debian and across all debian / ubuntu and deb derivative distributions via apt.

          Here is info obtained with apt-cache show

          debian:~# apt-cache show mytop|grep -i description -A 3
          Description: top like query monitor for MySQL
          Mytop is a console-based tool for monitoring queries and the performance
          of MySQL. It supports version 3.22.x, 3.23.x, 4.x and 5.x servers.
          It's written in Perl and support connections using TCP/IP and UNIX sockets.

          Installing the tool is done with the trivial:

          debian:~# apt-get --yes install mytop
          ....

          mtop used to be available for apt-get-ting in Debian Lenny and prior Debian releases but in Squeeze onwards, only mytop is included (probably due to some licensing incompitabilities with mtop??).

          For those curious on how mtop / mytop works – both are perl scripts written to periodically connects to the SQL server and run commands similar to SHOW FULL PROCESSLIST;. Then, the output is parsed and displayed to the user.

          Here how mytop running, looks like:

          MyTOP showing queries running on Ubuntu 8.04 Linux - Debugging interactively top like MySQL

          2. Installing mytop on RHEL and CentOS

          By default in RHEL and CentOS and probably other RedHat based Linux-es, there is neither mtop nor mytop available in package repositories. Hence installing the tools on those is only available from 3rd parties. As of time of writting an rpm builds for RHEL and CentOS, as well as (universal rpm distros) src.rpm package is available on http://pkgs.repoforge.org/mytop/. For the sake of preservation – if in future those RPMs disappear, I made a mirror of mytop rpm's here

          Mytop rpm builds depend on a package perl(Term::ReadKey), my attempt to install it on CentOS 5.6, returned following err:

          [root@cenots ~]# rpm -ivh mytop-1.4-2.el5.rf.noarch.rpm
          warning: mytop-1.4-2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
          error: Failed dependencies:
          perl(Term::ReadKey) is needed by mytop-1.4-2.el5.rf.noarch

          The perl(Term::ReadKey package is not available in CentOS 5.6 and (probably other centos releases default repositories so I had to google perl(Term::ReadKey) I found it on http://rpm.pbone.net/ package repository, the exact url to the rpm dependency as of time of writting this post is:

          ftp://ftp.pbone.net/mirror/yum.trixbox.org/centos/5/old/perl-Term-ReadKey-2.30-2.rf.i386.rpm

          Quickest, way to install it is:

          [root@centos ~]# rpm -ivh ftp://ftp.pbone.net/mirror/yum.trixbox.org/centos/5/old/perl-Term-ReadKey-2.30-2.rf.i386.rpmRetrieving ftp://ftp.pbone.net/mirror/yum.trixbox.org/centos/5/old/perl-Term-ReadKey-2.30-2.rf.i386.rpmPreparing... ########################################### [100%]
          1:perl-Term-ReadKey ########################################### [100%]

          This time mytop, install went fine:

          [root@centos ~]# rpm -ivh mytop-1.4-2.el5.rf.noarch.rpm
          warning: mytop-1.4-2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
          Preparing... ########################################### [100%]
          1:mytop ########################################### [100%]

          To use it further, it is the usual syntax:

          mytop -u username -p 'secret_password' -d database

          CentOS Linux MyTOP MySQL query benchmark screenshot - vpopmail query

          3. Installing mytop and mtop on FreeBSD and other BSDs

          To debug the running SQL queries in a MySQL server running on FreeBSD, one could use both mytop and mtop – both are installable via ports:

          a) To install mtop exec:

          freebsd# cd /usr/ports/sysutils/mtop
          freebsd# make install clean
          ....

          b) To install mytop exec:

          freebsd# cd /usr/ports/databases/mytop
          freebsd# make install clean
          ....

          I personally prefer to use mtop on FreeBSD, because once run it runs prompts the user to interactively type in the user/pass

          freebsd# mtop

          Then mtop prompts the user with "interactive" dialog screen to type in user and pass:

          Mtop interactive type in username and password screenshot on FreeBSD 7.2

          It is pretty annoying, same mtop like syntax don't show user/pass prompt:

          freebsd# mytop
          Cannot connect to MySQL server. Please check the:

          * database you specified "test" (default is "test")
          * username you specified "root" (default is "root")
          * password you specified "" (default is "")
          * hostname you specified "localhost" (default is "localhost")
          * port you specified "3306" (default is 3306)
          * socket you specified "" (default is "")
          The options my be specified on the command-line or in a ~/.mytop
          config file. See the manual (perldoc mytop) for details.
          Here's the exact error from DBI. It might help you debug:
          Unknown database 'test'

          The correct syntax to run mytop instead is:

          freebsd# mytop -u root -p 'secret_password' -d 'blog'

          Or the longer more descriptive:

          freebsd# mytop --user root --pass 'secret_password' --database 'blog'

          By the way if you take a look at mytop's manual you will notice a tiny error in documentation, where the three options –user, –pass and –database are wrongly said to be used as -user, -pass, -database:

          freebsd# mytop -user root -pass 'secret_password' -database 'blog'
          Cannot connect to MySQL server. Please check the:

          * database you specified "atabase" (default is "test")
          * username you specified "ser" (default is "root")
          * password you specified "ass" (default is "")
          * hostname you specified "localhost" (default is "localhost")
          * port you specified "3306" (default is 3306)
          * socket you specified "" (default is "")a
          ...
          Access denied for user 'ser'@'localhost' (using password: YES)

          Actually it is interesting mytop, precededed historically mtop.
          mtop was later written (probably based on mytop), to run on FreeBSD OS by a famous MySQL (IT) spec — Jeremy Zawodny .
          Anyone who has to do frequent MySQL administration tasks, should already heard Zawodny's name.
          For those who haven't, Jeremy used to be a head database administrators and developer in Yahoo! Inc. some few years ago.
          His website contains plenty of interesting thoughts and writtings on MySQL server and database management
           

          Fix Null error in WordPress comment reply with wordpress-threaded-comments plugin enabled

          Friday, April 6th, 2012

          I'm running WordPress for already 3 years or so now. Since some very long time. The first wordpress install, I can hardly remember but it something like wordpress 2.5 or wordpress 2.4

          Since quite a long time my wordpress blog is powered by a number of plugins, which I regularly update, whenever new plugins pops up …
          I haven't noticed most of the time problems during major WordPress platform updates or the update of the installed extensions. However, today while I tried to reply back to one of my blog comments, I've been shocked that, I couldn't.
          Pointing at the the Comment Reply box and typing inside was impossible and a null message was stayed filled in the form:

          To catch what was causing this weird misbehaving with the reply comments functionality, I grepped through my /var/www/blog/wp-content/plugins/* for the movecfm(null,0,1,null):

          # cd /var/www/blog/wp-content/plugins
          # grep -rli 'movecfm(null,0,1,null)' */*.php
          wordpress-thread-comment/wp-thread-comment.php

          I've taken the string movecfm(null,0,1,null) from the browser page source in in my Firefox by pressing – Ctrl+U).

          Once I knew of the problem, I first tried commenting the occurances of the null fields in wp-thread-comment.php, but as there, were other troubles in commenting this and I was lazy to read the whole code, checked online if some other fellows experienced the same shitty null void javascript error and already someone pointed at a solution. In the few minutes search I was unable to find anyone who reported for this bug, but what I found is some user threads on wordpress.org mentioning since WordPress 2.7+ the wordpress-threaded-comments is obsolete and the functionality provided by the plugin is already provided by default in newer WPinstalls.

          Hence in order to enable the threaded comments WordPress (embedded) reply functionality from within the wp-admin panel used:

          Settings -> Discussions -> Enable Threaded (nested) comments (Tick)

          Enable Nested Comments WordPress default wp comments enable reply functionality screenshot

          You see there is also an option to define how many nested comments subcomments, can be placed per comment, the default was 5, but I thought 5 is a bit low so increased it to 10 comments reply possible per comment.

          Finally, to prevent the default threaded comments to interfere with the WordPress Threaded Comments plugin, disabled the plugin through menus:

          Plugins -> Active -> WordPress Thread Comments (Deactivate)

          This solved the weird javascript null "bug" caused by wordpress-threaded-comments once and for all.
          Hopefully onwards, my blog readers will not have issues with threaded Reply Comments.

          How to reduce spam in PHPBB based internet forum on Debian GNU / Linux

          Monday, March 26th, 2012

          phpbb reduce spam bot registrations on Debian Linux tiny script

          I had to install two PHPBB based internet forums, some long time ago. Since long time passed and I haven't checked what's happening with them I just noticed. They start filling up spam threads. The phpbb installations are done using the standard shipped deb packages in Debian Linux Lenny.

          After checking online, I found one smart solution to . The idea is very simple most spam bots are written in a way that they don't have a properly set timezone. Therefore the quickest way to get rid of spam bots which try to auto register and put spam content inside the a forum category or post is to add a simple if condition in php to check the browser set timezone:

          The file to add the php if condition is ucp_register.phpThe phpbb package install places default phpbb path on Debian is /usr/share/phpbb3/ and hence the file I had to modify is located in:

          /usr/share/phpbb3/www/includes/ucp/ucp_register.php

          To make the TZ check one needs to modify ../www/includes/ucp/ucp_register.php and look for php array definition:

          $data = array(
          'username' => utf8_normalize_nfc(request_var('username', '', true)),
          'new_password' => request_var('new_password', '', true),
          'password_confirm' => request_var('password_confirm', '', true),
          'email' => strtolower(request_var('email', '')),
          'email_confirm' => strtolower(request_var('email_confirm', '')),
          'confirm_code' => request_var('confirm_code', ''),
          'lang' => basename(request_var('lang', $user->lang_name)),
          'tz' => request_var('tz', (float) $timezone),
          );

          Right after this chunk of code add the if condition code which is like so:

          if ($data['tz'] == '-12.00')
          {
          die('Die, bot! Die.');
          }

          From now onwards, any attempt for new user registration with an incorrect timezone of -12.00 will be immediately stopped while the forum spammer bot will be offered an empty page 🙂

          Another good practice is to disable Birthday Listing from phpbb Admin Control panel (ACP). Go to menus:

          ACP -> General -> Board Settings -> Enable Birthday listing: (No)

          Enable birthday listing phpbb forum screenshot

          I like disabling birthday listing, as when it is enabled and you have some spammer registrations, which even though didn't succeeded to contaminate your forum content has specified a birthday and therefore there profiles gets popping up each different day on the main page of the forum.
          This will not eradicate all spammer bots, but at least will significantly decrease spammer bot registrations.

          How to change GNOME Resolution with a command using terminal or console on Debian GNU / Linux and FreeBSD

          Friday, January 6th, 2012

          I'm testing some old school arcade games, available from Debian's package repositories and quitting one of the games ended me up with a GNOME Screen Resolution of 640×480 pixels.

          I wanted to revert back to the Classics resolution, so what I would normally do to do that is use >GNOME menus:

          System -> Preferences -> Monitors

          In that huge screen resolution on my 14 inch lenovo notebook screen, however the System menu cannot fit in 640×480 resolution. You can see the non-screen fitting System on the screenshot below:

          Screenshot Debian GNU / Linux Squeeze GNOME Desktop 640x480

          Having this situation, I needed a way to change back to my normal daily used 1024x768px screen resolution to continue my daily work by some other way.
          One possible solution I thought of was Logging Off Gnome and logging again. Loggig off and log on again would usually restart the initiated GNOME session and therefore will reset the screen resolution to my default 1024×768 / 32 bit color.

          Having the unobservable System gnome panel menu on my screen however made using the usual Log off procedure via System -> Log Out myusername impossible…

          Another possible way to actually restart my screen and hence revert back to my original resolution is achiavable using the classical restart X server key switch CTRL + ALT + backspace (bckspc) . Though this was a possible approach to the situation, I had a bunch of programs already running on my desktop and I did not wanted to interrupt my desktop session, what I was looking for is simply change the screen resolution size .

          With all said I had to look up for alternative way (preferably easy) way, to revert back my screen resolution to my desired 1024×768.

          As a console guy, I was interested if there is some kind of possibility to change my GNOME resolution directly using xterm or gnome-terminal , after a bit of check up online, I've found few threads started by people who were looking just like me for a way to change GNOME / KDE screen resolution size on various distributions Linux desktops as well on Free/Net/Open/BSDs. The answer to the question on few places was the command xrandr which I had used some few years ago to initiate remote X server connections via SSH

          xrandr is actually a great tool part of the x11-xserver-utils

          Actually xrandr is capable of doing a few things besides setting the screen resolution size, just to name a few it supports change the screen orientation, reflection of the output of the screen, adjust brightness, set color gamma etc. etc.

          It is good to mention that xrandr changes the resolution not on a GNOME level but on Xorg server level.

          Using xrandr to change the screen resolution appeared to be very easy.

          1. First I issued xrandr to check all the supported xrandr resolutions by my X server hipo@noah:~/Desktop$ xrandr Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192VGA1 disconnected (normal left inverted right x axis y axis)LVDS1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm 1024x768 60.0*+ 50.0 800x600 60.3 56.2 640x480 60.0 59.9 TV1 disconnected (normal left inverted right x axis y axis)hipo@noah:~/Desktop$

          From the output you can see I have 3 basic resolutions configured in my Xorg, I can switch between.

          2. To switch to my previous default screen resolution

          hipo@noah:~/Desktop$ xrandr -s 1024x768

          After using xrandr command to revert back to my default screen size, I realized there is two other (partially command line partially gui) way to change to 1024×768 pixels.3. Through launching gnome Control Center and searching for Monitors menu.

          If one prefers this way he can;

          i) press ALT+F2 to invoke Gnome's Run Application dialog

          ii) issue gnome-control-center command:

          GNOME run application Dialog GNOME Control Center cmd debian GNU / Linux

          GNOME Control Center search Monitors menu debian GNU / Linux

          4. By invoking gnome's Control Panel -> Monitors settings window by a command

          hipo@noah:~/Desktop$ gnome-display-properties

          GNOME display properties command to launch monitors screen resolution settings