I reproduct the bug.
firstly, close api_rate_limit.
use the command below to create 2000 flavor.
$ for i in {1..2000}; do nova flavor-create f-$i $i 1024 20 1 ;done;
then I use novaclient to list all flavor
$ time nova flavor-list
+--+-+---+--+---+--+---+-+---+-+
| ID | Name| Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor |
Is_Public | extra_specs |
+--+-+---+--+---+--+---+-+---+-+
| 1| m1.tiny | 512 | 0| 0 | | 1 | 1.0 |
True | {} |
| 10 | f-10| 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 100 | f-100 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1000 | f-1000 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1001 | f-1001 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1002 | f-1002 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1003 | f-1003 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1004 | f-1004 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1005 | f-1005 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1006 | f-1006 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1007 | f-1007 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1008 | f-1008 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1009 | f-1009 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 101 | f-101 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1010 | f-1010 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1011 | f-1011 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1012 | f-1012 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1013 | f-1013 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1014 | f-1014 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
..
| 1886 | f-1886 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1887 | f-1887 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1888 | f-1888 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1889 | f-1889 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 189 | f-189 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1890 | f-1890 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1891 | f-1891 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1892 | f-1892 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1893 | f-1893 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1894 | f-1894 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1895 | f-1895 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1896 | f-1896 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1897 | f-1897 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1898 | f-1898 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
| 1899 | f-1899 | 1024 | 20 | 0 | | 1 | 1.0 |
True | {} |
+--+-+---+--+---+--+---+-+---+-+
real2m11.275s
user0m3.280s
sys 0m0.456s
Because novaclient need to get each flavor's extra_specs detail, in fact
it make thousands of request to nova-api. which make the command very
slow.
If I just hit the REST API by
$ time http get localhost:8774/v2/33027e9bc0914bc88414bae31c6ecc9f/flavors
{
"id": "1899",
"links": [
{
"href":
"http://localhost:8774/v2/33027e9bc0914bc88414bae31c6ecc9f/flavors/1899";,
"rel": "self"
},
{
"href":
"http://localhost:8774/33027e9bc0914bc88414bae31c6ecc9f/flavors/1899";,
"rel": "bookmark"
}