How To Use Apache JMeter To Perform Load Testing on a Web Server

Introduction

In this tutorial, we will go over how to use Apache JMeter to perform basic load and stress testing on your web application environment. We will show you how to use the graphical user interface to build a test plan and to run tests against a web server.

JMeter is an open source desktop Java application that is designed to load test and measure performance. It can be used to simulate loads of various scenarios and output performance data in several ways, including CSV and XML files, and graphs. Because it is 100% Java, it is available on every OS that supports Java 6 or later.

 

Prerequisites

In order to follow this tutorial, you will need to have a computer that you can run JMeter on, and a web server to load test against. Do not run these tests against your production servers unless you know they can handle the load, or you may negatively impact your server’s performance.

You may adapt the tests in this tutorial to any of your own web applications. The web server that we are testing against as an example is a 1 CPU / 512 MB VPS running WordPress on a LEMP Stack, in the NYC2 DigitalOcean Datacenter. The JMeter computer is running in the DigitalOcean office in NYC (which is related to the latency of our tests).

Please note that the JMeter test results can be skewed by a variety of factors, including the system resources (CPU and RAM) available to JMeter and the network between JMeter and the web server being tested. The size of the load that JMeter can generate without skewing the results can be increased by running the tests in the non-graphical mode or by distributing the load generation to multiple JMeter servers.  Lire la suite…

How to Optimize MySQL Performance Using MySQLTuner

Running MySQL at optimal settings for specific resources helps handle larger server loads and prevents server slowdown. Generally, after tuning Apache to handle larger loads, it is beneficial to tune MySQL to additional connections.

MySQL tuning title graphic

Database tuning is an expansive topic, and this guide covers only the basics of editing your MySQL configuration. Large MySQL databases can require a considerable amount of memory. For this reason, we recommend using a high memory Linode for such setups.

The steps in this guide require root privileges. Be sure to run the steps below as root or with the sudo prefix. For more information on privileges see our Users and Groups guide.

Tools That Can Help Optimize MySQL

In order to determine if your MySQL database needs to be reconfigured, it is best to look at how your resources are performing now. This can be done with the top command or with the Linode Longview service. At the very least, you should familiarize yourself with the RAM and CPU usage of your server, which can be discovered with these commands:

1
2
echo [PID]  [MEM]  [PATH] &&  ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20

MySQLTuner

The MySQLTuner script assesses your MySQL installation, and then outputs suggestions for increasing your server’s performance and stability.

  1. Download and run MySQLTuner:

    1
    curl -L http://mysqltuner.pl/ | perl
    
  2. It outputs your results:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     >>  MySQLTuner 1.4.0 - Major Hayden <major@mhtx.net>
     >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
     >>  Run with '--help' for additional options and output filtering
    Please enter your MySQL administrative login: root
    Please enter your MySQL administrative password:
    [OK] Currently running supported MySQL version 5.5.41-0+wheezy1
    [OK] Operating on 64-bit architecture
    
    -------- Storage Engine Statistics -------------------------------------------
    [--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
    [--] Data in InnoDB tables: 1M (Tables: 11)
    [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
    [!!] Total fragmented tables: 11
    
    -------- Security Recommendations  -------------------------------------------
    [OK] All database users have passwords assigned
    
    -------- Performance Metrics -------------------------------------------------
    [--] Up for: 47s (113 q [2.404 qps], 42 conn, TX: 19K, RX: 7K)
    [--] Reads / Writes: 100% / 0%
    [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
    [OK] Maximum possible memory usage: 597.8M (60% of installed RAM)
    [OK] Slow queries: 0% (0/113)
    [OK] Highest usage of available connections: 0% (1/151)
    [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K
    [!!] Query cache efficiency: 0.0% (0 cached / 71 selects)
    [OK] Query cache prunes per day: 0
    [OK] Temporary tables created on disk: 25% (54 on disk / 213 total)
    [OK] Thread cache hit rate: 97% (1 created / 42 connections)
    [OK] Table cache hit rate: 24% (52 open / 215 opened)
    [OK] Open file limit used: 4% (48/1K)
    [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks)
    [OK] InnoDB buffer pool / data size: 128.0M/1.2M
    [OK] InnoDB log waits: 0
    -------- Recommendations -----------------------------------------------------
    General recommendations:
        Run OPTIMIZE TABLE to defragment tables for better performance
        Enable the slow query log to troubleshoot bad queries
    Variables to adjust:
        query_cache_limit (> 1M, or use smaller result sets)
    

    MySQLTuner offers suggestions regarding how to better the database’s performance. If you are wary about updating your database on your own, following MySQLTuner’s suggestions is one of the safer ways to improve your database performance.

Tuning MySQL

When altering the MySQL configuration, be alert to the changes and how they affect your database. Even when following the instructions of programs such as MySQLTuner, it is best to have some understanding of the process.

The file you are changing is located at /etc/mysql/my.cnf.

Prior to updating the MySQL configuration, create a backup of the my.cnf file:

1
cp /etc/mysql/my.cnf ~/my.cnf.backup

Best practice suggests that you make small changes, one at a time, and then monitor the server after each change. You should restart MySQL after each change:

  • For systems without systemd:

    1
    systemctl restart mysqld
    
  • For distributions which don’t use systemd:

    1
    service mysql restart
    

When changing values in the my.cnf file, be sure that the line you are changing hasn’t been commented out with the pound (#) prefix.

key_buffer

Changing the key_buffer allocates more memory to MySQL, which can substantially speed up your databases, assuming you have the memory free. The key_buffer size should generally take up no more than 25 percent of the system memory when using the MyISAM table engine, and up to 70 percent for InnoDB. If the value is set too high, resources are wasted.

According to MySQL’s documentation, for servers with 256MB (or more) of RAM with many tables, a setting of 64M is recommended. Servers with 128MB of RAM and fewer tables can be set to 16M, the default value. Websites with even fewer resources and tables can have this value set lower.

max_allowed_packet

This parameter lets you set the maximum size of a sendable packet. A packet is a single SQL state, a single row being sent to a client, or a log being sent from a master to a slave. If you know that your MySQL server is going to be processing large packets, it is best to increase this to the size of your largest packet. Should this value be set too small, you would receive an error in your error log.

thread_stack

This value contains the stack size for each thread. MySQL considers the default value of the thread_stack variable sufficient for normal use; however, should an error relating to the thread_stack be logged, this can be increased.

thread_cache_size

If thread_cache_size is “turned off” (set to 0), then any new connection being made needs a new thread created for it. When the connections disengage the thread is destroyed. Otherwise, this value sets the number of unused threads to store in a cache until they need to be used for a connection. Generally this setting has little affect on performance, unless you are receiving hundreds of connections per minute, at which time this value should be increased so the majority of connections can be made on cached threads.

max_connections

This parameter sets the maximum amount of concurrent connections. It is best to consider the maximum amount of connections you have had in the past before setting this number, so you’ll have a buffer between that upper number and the max_connections value. Note, this does not indicate the maximum amount of users on your website at one time; rather it shows the maximum amount of users making requests concurrently.

table_cache

This value should be kept higher than your open_tables value. To determine this value use:

1
SHOW STATUS LIKE 'open%';

 

10 essential performance tips for MySQL

As with all relational databases, MySQL can prove to be a complicated beast, one that can crawl to a halt at a moment’s notice, leaving your applications in the lurch and your business on the line.

The truth is, common mistakes underlie most MySQL performance problems. To ensure your MySQL server hums along at top speed, providing stable and consistent performance, it is important to eliminate these mistakes, which are often obscured by some subtlety in your workload or a configuration trap.

Luckily, many MySQL performance issues turn out to have similar solutions, making troubleshooting and tuning MySQL a manageable task.

Here are 10 tips for getting great performance out of MySQL.

MySQL performance tip No. 1: Profile your workload

The best way to understand how your server spends its time is to profile the server’s workload. By profiling your workload, you can expose the most expensive queries for further tuning. Here, time is the most important metric because when you issue a query against the server, you care very little about anything except how quickly it completes.

The best way to profile your workload is with a tool such as MySQL Enterprise Monitor’s query analyzer or the pt-query-digest from the Percona Toolkit. These tools capture queries the server executes and return a table of tasks sorted by decreasing order of response time, instantly bubbling up the most expensive and time-consuming tasks to the top so that you can see where to focus your efforts.

Workload-profiling tools group similar queries together, allowing you to see the queries that are slow, as well as the queries that are fast but executed many times.

Lire la suite…

How To Improve Database Searches with Full-Text Search in MySQL 5.6 on Ubuntu 16.04

05/11/2017 Categories: Système Tags: , Aucun commentaire

Introduction

Full-text search, or FTS, is a technique used by search engines to find results in a database. You can use it to power search results on websites like shops, search engines, newspapers, and more.

More specifically, FTS retrieves documents that don’t perfectly match the search criteria. Documents are database entities containing textual data. This means that when a user searches for « cats and dogs », for example, an application backed by FTS is able to return results which contain the words separately (just « cats » or « dogs »), contain the words in a different order (« dogs and cats »), or contain variants of the words (« cat » or « dog »). This gives applications an advantage in guessing what the user means and returning more relevant results faster.

Technically speaking, database management systems (DBMS) like MySQL usually allow partial text lookups using LIKE clauses. However, these requests tend to underperform on large datasets. They’re also limited to matching the user’s input exactly, which means a query might produce no results even if there are documents with relevant information.

Using FTS, you can build a more powerful text search engine without introducing extra dependencies on more advanced tools. In this tutorial, you will use MySQL 5.6 to query a database using full-text search, then quantify the results by their relevance to the search input and display only the best matches.

 

Prerequisites

Before you begin this tutorial, you will need:

Lire la suite…

Categories: Système Tags: ,

How To Install and Secure phpMyAdmin on Ubuntu 16.04

05/11/2017 Categories: Bases de données Tags: , , , Aucun commentaire

Introduction

While many users need the functionality of a database management system like MySQL, they may not feel comfortable interacting with the system solely from the MySQL prompt.

phpMyAdmin was created so that users can interact with MySQL through a web interface. In this guide, we’ll discuss how to install and secure phpMyAdmin so that you can safely use it to manage your databases from an Ubuntu 16.04 system. 

Prerequisites

Before you get started with this guide, you need to have some basic steps completed.

First, we’ll assume that you are using a non-root user with sudo privileges, as described in steps 1-4 in the initial server setup of Ubuntu 16.04.

We’re also going to assume that you’ve completed a LAMP (Linux, Apache, MySQL, and PHP) installation on your Ubuntu 16.04 server. If this is not completed yet, you can follow this guide on installing a LAMP stack on Ubuntu 16.04.

Finally, there are important security considerations when using software like phpMyAdmin, since it:

  • Communicates directly with your MySQL installation
  • Handles authentication using MySQL credentials
  • Executes and returns results for arbitrary SQL queries

For these reasons, and because it is a widely-deployed PHP application which is frequently targeted for attack, you should never run phpMyAdmin on remote systems over a plain HTTP connection. If you do not have an existing domain configured with an SSL/TLS certificate, you can follow this guide on securing Apache with Let’s Encrypt on Ubuntu 16.04.

Once you are finished with these steps, you’re ready to get started with this guide.

Lire la suite…

How To Measure MySQL Query Performance with mysqlslap

Introduction

MySQL comes with a handy little diagnostic tool called mysqlslap that’s been around since version 5.1.4. It’s a benchmarking tool that can help DBAs and developers load test their database servers.

mysqlslap can emulate a large number of client connections hitting the database server at the same time. The load testing parameters are fully configurable and the results from different test runs can be used to fine-tune database design or hardware resources.

In this tutorial we will learn how to use mysqlslap to load test a MySQL database with some basic queries and see how benchmarking can help us fine-tune those queries. After some basic demonstrations, we will run through a fairly realistic test scenario where we create a copy of an existing database for testing, glean queries from a log, and run the test from a script.

The commands, packages, and files shown in this tutorial were tested on CentOS 7. The concepts remain the same for other distributions. Lire la suite…

How do I… Stress test MySQL with mysqlslap?

One of the interesting new tools in MySQL 5.1.4 is mysqlslap, a load emulator that lets you see how well a particular query set or table engine performs under high-load conditions.

A query that consumes too many database resources may be the result of designing tables incorrectly, choosing the wrong table type, or creating an inefficient query. When a query eats up a lot of database resources, it can negatively affect other application components. By using mysqlslap to stress test a server in a non-public environment, you will discover these errors sooner, allowing you to you avoid a database meltdown once your application goes live.

This tutorial shows how you can use mysqlslap to run stress tests involving multiple clients, custom queries, different table engines, and much more. Lire la suite…

ORC – Un réseau de stockage cloud, anonyme et décentralisé reposant sur Tor

02/11/2017 Categories: Logiciel, Sécurité, Système Tags: , , Comments off

Counterpoint Hackerspace, une bande de geeks localisée à Roswell dans l’état de Georgie aux États unis, a eu l’excellente idée de mettre au point un outil permettant de stocker sur Tor des fichiers, un peu à la manière d’un espace « cloud », mais avec tous les avantages que Tor peut apporter : anonymat, décentralisation et gestion par la communauté. Lire la suite…

Categories: Logiciel, Sécurité, Système Tags: , ,

High Sierra Problems: How To Fix The Most Common Macos Issues

30/10/2017 Categories: Logiciel, Système Tags: , , Comments off

The excitement of installing a new version of macOS, especially if its a High Sierra 10.13, is only tempered by the possibility of it not working properly or not being compatible with the apps you use most.

Before you begin upgrade to MacOS make a bootable backup

If you haven’t started the process of upgrading yet, check if the Mac is compatible with macOS High Sierra and make a bootable backup. 

Do it now, before you do anything else. If things go disastrously wrong at least you’ll be able to boot from macOS’ Recovery partition and migrate all your data back to your Mac. You can use any backup tool you like – Apple obviously favours Time Machine, but you don’t have to use it. You can use, for example, Get Backup Pro, which comes with your Setapp subscription. Don’t have a Setapp subscription? Click here to sign up.

Common MacOS High Sierra Problems

While most new versions of macOS are relatively problem-free, it’s not unknown for users to have issues – particularly with a beta or .0 release. Thankfully most are easy to resolve. Here’s how to fix the most common High Sierra issues.

High Sierra Installer Won’t Download

If you’re trying to download the macOS High Sierra installer, you’ll need to have signed up to App Store. If you’ve done that, and managed to start the downloading process only for it to fail, force quit the App Store app.

  1. Press Cmd-Alt-Esc or go to the Apple menu and choose Force Quit.
  2. Select the App Store app and confirm you want to force quit.
  3. Re-launch the App Store and try downloading again.

Macos High Sierra Won’t Install

If the download completes successfully but the installation doesn’t finish, force quit the installer using the same procedure as above. 

  1. Restart your Mac
  2. Launch the App Store app and go to the Purchases tab. 
  3. Find macOS High Sierra and click Install. 

If that doesn’t work, try deleting the downloaded installer (it’s in your Applications folder) using CleanMyMac and download it again.

If you have a copy of macOS Server in your applications folder, that may be the root of the problem. Delete it and try again.

Lire la suite…

Categories: Logiciel, Système Tags: , ,

If your iPhone, iPad, or iPod touch won‘t turn on or is frozen

30/10/2017 Categories: Constructeur, Matériel Tags: , Comments off

If your device has a frozen screen or doesn’t respond when you touch it, or becomes stuck when you turn it on, learn what to do.

If your screen is black or frozen

If your screen is black or frozen, you might need to force restart your device. A force restart won’t erase the content on your device. You can force restart your device even if the screen is black or the buttons aren’t responding. Follow these steps:

  • On an iPhone 8 or iPhone 8 Plus: Press and quickly release the Volume Up button. Then press and quickly release the Volume Down button. Finally, press and hold the Side button until you see the Apple logo.
  • On an iPhone 7 or iPhone 7 Plus: Press and hold both the Side and Volume Down buttons for at least 10 seconds, until you see the Apple logo.
  • On an iPhone 6s and earlier, iPad, or iPod touch: Press and hold both the Home and the Top (or Side) buttons for at least 10 seconds, until you see the Apple logo.

If your device still won’t turn on or start up

Plug in your device and let it charge for up to one hour.

After a few minutes, you should see the charging screen. 

 

If you don’t see the charging screen within an hour, or you see the connect to power screen, check the jack, USB cable, and power adapter. Make sure that everything is plugged in firmly, free of debris, and not damaged. You might want to try a different USB cable or power adapter.

If your device still doesn’t turn on, see what to do next.

If your device turns on but gets stuck during start up

If you see the Apple logo or a red or blue screen during startup, try these steps:

  1. Connect your device to a computer and open iTunes. If you don’t have a computer, try to borrow one, or go to an Apple Store or Apple Authorized Service Provider for help. 
  2. While your device is connected, force it to restart. 
    • On an iPhone 8 or iPhone 8 Plus: Press and quickly release the Volume Up button. Then press and quickly release the Volume Down button. Finally, press and hold the Side button until you see the recovery-mode screen.
    • On an iPhone 7 or iPhone 7 Plus: Press and hold the Side and Volume Down buttons at the same time. Keep holding them until you see the recovery-mode screen.
    • On an iPhone 6s and earlier, iPad, or iPod touch: Press and hold both the Home and the Top (or Side) buttons at the same time. Keep holding them until you see the recovery-mode screen.
  3. Don’t release the buttons when you see the Apple logo. Keep holding until you see the recovery mode screen.

 

  1. When you get the option to restore or update, choose Update. iTunes will try to reinstall iOS without erasing your data.

iTunes will download the software for your device. If it takes more than 15 minutes, your device will exit recovery mode and you’ll need to repeat steps 2 and 3.

 
Categories: Constructeur, Matériel Tags: ,